文本格式设置的两种方法区别.doc_第1页
文本格式设置的两种方法区别.doc_第2页
文本格式设置的两种方法区别.doc_第3页
文本格式设置的两种方法区别.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

在使用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);AS3里TextField的Format的设置 在AS3里面,你每次创建的一个TextField对象都有一个相同的默认TextFormat,当你每次改变这个TextField里面的文本内容时,这个里面的文本使用的格式就是默认的格式(默认的TextFormat)在AS3里面,你每次创建的一个TextField对象都有一个相同的默认TextFormat,当你每次改变这个TextField里面的文本内容时,这个里面的文本使用的格式就是默认的格式(默认的TextFormat)。比如下面的代码可能和你期待的效果一样: var fmt:TextFormat = new TextFormat(); fmt.align = TextFormatAlign.CENTER; fmt.color = 0xffcc00; fmt.size = 14; var tf:TextField = new TextField(); tf.width = 140; tf.height = 24; tf.text = This is just for test tf.setTextFormat(fmt); 这个时候,这个文本的颜色是橙红色,字体大小为14号,没有任何问题,和我们所期待的一样。但是如果接着你改变这个文本的内容:tf.text = This is another string for test 你会发现它的格式又回到了诡异的默认格式,如果你在最开始没有指定文本内容,你也许还会错误地以为那个setTextFormat方法没有起作用。 其实事情是这样的:每次改变TextField里面的内容,这个内容都会以默认格式显示,所以你需要指定TextField的默认格式,TextField是有这个属性的: tf.defaultTextFormat = fmt; AS3研究TextField心得这两天自己做了textinput和textarea组件,众所周知,这两种组件的内部其实都是一个原始的textfield。这里把自己的一些研究心得记录如下,首先要明白几种长度单位:1、磅:pt(point),这是一种绝对长度单位,为1/72英寸,等于0.3527mm2、像素:px,这是一种相对长度单位,譬如,WONDOWS的用户所使用的分辨率一般是96像素/英寸。而MAC的用户所使用的分辨率一般是72像素/英寸。以下讨论文本框TextField相关:1、字号也就是fontsize,flash中单位是磅(office中也时),可以使用textHeight和textWidth来获取文本的像素高度和宽度,由于各种字体自身的差别,不是相同字号的字体所需要的文本框高度都一致。譬如Arial字体就比宋体所需要的文本框高度高。2、文本框高度,对于单行文本框,给定一个高度和一种字体,如何确定所需要的最大的字号呢?有一个简便方法就是,新建一个autosize的文本框,设置其字号并判断其高度来得到最大字号。function getFontSizeByTxtHeight(h:Number, font:String):Number /给定单行文本框高度h,字体font获取最大字号 var testtxt:TextField = new TextField(); testtxt.type = TextFieldType.INPUT; testtxt.autoSize = TextFieldAutoSize.LEFT; for (var size:Number=Math.round(h);size0; size-=0.5) var tf:TextFormat = new TextFormat(); tf.leading = 0; tf.font = font; tf.size = size; testtxt.defaultTextFormat = tf; testtxt.text = test单行文本; /trace(size, testtxt.height); if (testtxt.height = h) break; return size;3、leading行与行之间的垂直距离在flash 舞台中新建一个文本框,leading的默认值为2,单位也是磅,而new出来的文本框,leading默认值为0 4、锯齿消除方法,在舞台上可以看到有五种方式:使用设备字体、位图文本、动画消除锯齿、可读性消除锯齿、自定义消除锯齿。第一种会查找客户端中该对应字体并进行显示,如果客户端不存在相应的字体,则显示会出现预料外的情况。后四种方式需要嵌入字体。而TextField类对应的属性中有embedFonts:是否使用嵌入字体,false时相当于使用设备字体antiAliasType:抗锯齿类型flash.text.AntiAliasType.NORMAL、flash.text.AntiAliasType.ADVANCEDgridFitType:网格固定类型:thickness、sharpness对应自定义消除锯齿的粗细、清晰度5、滚动相关,textfield有scrollV、scrollH、maxScrollV、maxScrollH、bottomScrollV属性来指示相关滚动。V 代表垂直方向,是以行为单位的,如果文本框内显示得下指定行数,则maxScrollV为1,一旦显示不小,maxScrollV就不为1了,所以可以侦听文字的change事件判断maxScrollV来判断是否需要滚动条。scrollV到bottomScrollV之间是当前您能看到的文本框中中的行号。H代表水平方向,以像素为单位,从0开始,不同于V,同理检测maxScro

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论