备忘下:
在使用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);
测试结果图片为
相关推荐
Java组件的使用(Bottun,TextField等的使用方法,适合初学Java的人员参考)
swift3 label image button textfield创建以及使用方法
Java中TextField类.pdf 学习资料 复习资料 教学资源
自定义textfield
textField输入中文字符时,直接在代理方法里限制会有问题,因为系统会将高亮部分一起算入字符数,从而造成明明没有到达限制上限,输不进去的情况。 该方法利用分类与runtime结合,用block作为回调,只需一行代码即可...
Compose、Text、TextField、Image组合运用示例代码
手工创建TextField,TextField的属性基本上上面都描述了,以及键盘的回调方法
让你对文本更了解,让你可以轻松的学习textfield;让你知道文本可以根据内容的大小改变其宽度和高度
8-22textfield8-22textfield8-22textfield8-22textfield
一行代码解决textField输入中文长度限制 一行代码解决textField输入中文长度限制 一行代码解决textField输入中文长度限制
xcode5.0.2 ios7.0 storyboard中设置背景图片+多个textfield,
TextField 自动换行
TextField-InputView, UITextField InputView模式:终结注册类、信息采集类
TextField多行输入(自动换行),小惊奇。仅仅只是导入了一个字体文件
EXT表单验证之TextField,vtype 包括所有EXT中TextField的验证方式
实现键盘的点击隐藏和解决textField被呼出键盘挡住的问题的简单代码
解决了textField默认左边图片的距离边框的像素距离还有和输入文字的光标距离
ExtJS TextField常用方法
支持换行 空格 加粗 颜色 字号 字体 源码放送 用TextField实现
ios-TextField自动换行.zip