`

TextField中运用setTextFormat()方法和defaultTextFormat的区别

 
阅读更多

备忘下:

在使用TextFormat类来对TextField文本域进行格式化处理的时候,经常用到两个方法,一个是通过通过TextField类的实例方法setTextFormat()进行设置,另外一个是通过TextField类的属性defaultTextFormat进行设置。

他们的区别主要在两个地方,

1,setTextFormat()方法不适用于后来分配的文本,setTextFormat()方法只可以在文本已经被添加到文本域之后用于格式化一个文本域,也就是必须先给TextField的实例属性text分配值,才能进行格式化;如果运用了setTextFormat()格式化文本之后,text属性的值在被重新分配(重新赋值),那么,关联于原来文本域的任何自定义格式将被移除。然而,如果通过设置TextField的属性defaultTextFormat(文本域默认格式)来进行格式化,则需要先进行设置默认格式,即为defaultTextFormat赋值,再进行TextField类的text属性复制,在此之后的text属性重新赋值不会移除原来defaultTextFormat定义的格式。比如下面两个实例

在flash中新建一个AS3的fla文档,在帧上编写代码:

(第一部分代码)

var myText:TextField=new TextField();
myText.width=200;
myText.wordWrap=true;
var myTextFormat:TextFormat=new TextFormat();
myTextFormat.bold=true;
myTextFormat.size=18;
myText.text="Hellow World";//注意位置
myText.setTextFormat(myTextFormat);//注意位置
myText.appendText(" Hi World");
addChild(myText);

在上面的代码中,注意红色标记的两行代码的位置,TextField的实例myText成功格式化为18像素的粗体,如果调整一下位置,比如

(第二部分代码)

var myText:TextField=new TextField();
myText.width=200;
myText.wordWrap=true;
var myTextFormat:TextFormat=new TextFormat();
myTextFormat.bold=true;
myTextFormat.size=18;
myText.setTextFormat(myTextFormat);//注意位置
myText.text="Hellow World";//注意位置
myText.appendText(" Hi World");
addChild(myText);

此时再测试,则没有被格式化。通过setTextFormat()方法成功格式化的TextField实例,如果text属性重新被赋值,则原来相关的属性将被移除,比如把第一部分代码中myText.appendText(" Hi World");改成myText.text=" Hi World";比如

var myText:TextField=new TextField();
myText.width=200;
myText.wordWrap=true;
var myTextFormat:TextFormat=new TextFormat();
myTextFormat.bold=true;
myTextFormat.size=18;
myText.text="Hellow World";//注意位置
myText.setTextFormat(myTextFormat);//注意位置
myText.text=(" Hi World"); //重新赋值,将取消原有的格式
addChild(myText);

如果上述代码改成用默认文本格式进行处理,则是先进行defaultTextFormat复制,再进行TextField的属性text赋值,以后重新赋值不会改变格式。

var myText:TextField=new TextField();
myText.width=200;
myText.wordWrap=true;
var myTextFormat:TextFormat=new TextFormat();
myTextFormat.bold=true;
myTextFormat.size=18;
//myText.setTextFormat(myTextFormat);
myText.defaultTextFormat=myTextFormat; //先进行格式化
myText.text=" Hi World");//再进行text属性赋值
addChild(myText);

2,setTextFormat()方法可以对一段文本进行多种格式的设置,而defaultTextFormat只能对文本进行一种格式设置,但是,可以结合setTextFormat(),defaultTextFormat使用,对文本进行多样式控制,但是还是要遵循那个原则,即先设置defaultTextFormat属性,再为text赋值,再使用setTextFormat()格式化,如果最后重新为text重新赋值,则setTextFormat()设置的格式将被移除,defaultTextFormat设置的格式将被保存!

var myText:TextField=new TextField();
myText.width=200;
myText.wordWrap=true;
var myTextFormat:TextFormat=new TextFormat();
myTextFormat.bold=true;
myTextFormat.size=18;
var myNewTextFormat:TextFormat=new TextFormat();
myNewTextFormat.color=0x6600CC;
var myNewTextFormat2:TextFormat=new TextFormat();
myNewTextFormat2.color=0xFF0000;
myNewTextFormat2.size=25;
//注意下面红色部分的位置关系
myText.defaultTextFormat=myTextFormat;
myText.text="Hellow World. How are you ! ";

myText.setTextFormat(myNewTextFormat,0,6);
myText.setTextFormat(myNewTextFormat2,6,12);

addChild(myText);

测试结果图片为

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics