2011-11-29 53 views
1

我對Flash很新穎,我很難在複合字符串中定義變量的文本顏色。這是我到目前爲止:Actionscript 3 - 設置字符串中的變量的顏色

// VARIABLES FROM HTML 

var var1:Object = LoaderInfo(this.root.loaderInfo).parameters.var_1; 
var var2:Object = LoaderInfo(this.root.loaderInfo).parameters.var_2; 
var var3:Object = LoaderInfo(this.root.loaderInfo).parameters.var_3; 
var var4:Object = LoaderInfo(this.root.loaderInfo).parameters.var_4; 

var var5:Object = "HEADLINE NEWS: "; 
var5.color = "#a92400"; 

// COMPOUND STRING 

var var6:String = var5 + " " + var1 + " " + var2 + " lorem ipsum dolor sit amet."; 

任何想法?到目前爲止,我已經嘗試了一堆東西,但似乎沒有任何工作。

+0

我不太確定你要在這裏做什麼。你想爲TextField設置顏色嗎? –

+0

不,我只想更改複合字符串中文本變量「var5」(HEADLINE NEWS)的顏色。複合字符串是flash中的一個選取框滾動器的一部分,它將各種變量拉入整個句子中。我只想設計具體文字的樣式 – Carl

回答

0

它看起來像你要做的是將顏色設置爲文本,但你想通過使用對象來做到這一點。這是可能的,但這正是TextField的創建目的,正如上面的評論所暗示的,以及TextFormat對象。

所以通常你會做這樣的事情:

private var tf:TextField = new TextField(); 
private var format:TextFormat = new TextFormat(); 

private function setFontBoldAndColor():void{ 
tf.text = "Lorem ipsum"; 
format.font = "Arial"; 
format.color = 0xFF0000; //red 
format.bold = true; 

tf.setTextFormat(format); 
} 

你可以,如果你願意,如下(假設你創建了一個對象調用LBL和使用點符號,如lbl.color =傳遞對象爲0xFF0000):

private function setLabel(lbl:Object):void { 

     format.font = "Arial"; 
     format.color = lbl.color; 
     format.bold = true; 
     format.size = lbl.size; 

     _label = new TextField(); 
     _label.autoSize = TextFieldAutoSize.LEFT; 
        //a few other TextFormat properties if you want.... 
     _label.background = false; 
     _label.border = false; 
     _label.selectable = false; 
     _label.alpha = lbl.alpha; 
     _label.text = lbl.someText; 
     _label.setTextFormat(format); 
     addChild(_label); 

所有你需要做的是確保你正在創建的對象都對應於那些TextFormat對象的屬性。

+1

我建議設置屬性'_label.htmlText',它支持部分顏色的字符串:'_label.htmlText =「 Lorem ipsum dolor sit amet。」 ' – Miha