2011-11-29 50 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