var text_content:TextField=new TextField();
text_content.autoSize="left"; //
text_content.width=text_content.width + 1; //
text_content.x=10; //
text_content.wordWrap=true; //
text_content.multiline=true; //
text_content.text="ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd";
addChild(text_content);

上面一段代码,能看出什么问题吗?

其实运行后,在舞台上是看不到textfield的~

同样的的一段代码,分部注释每行,再进行调试,

var text_content:TextField=new TextField();
text_content.autoSize="left"; //如果单注释这句,text正常显示
text_content.width=text_content.width + 1; //如果单注释这句,舞台上看不到text
text_content.x=10; ////如果单注释这句,舞台上看不到text, 如果同时注释width x这两个属性的设置,text又正常显示
text_content.wordWrap=true; //如果单注释这句,text正常显示
text_content.multiline=true; //这句注释不注释都没影响
text_content.text="ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd";
addChild(text_content);
trace(text_content.width);

后面的注释写明了如果把这行注释掉会有什么效果。

在神奇的TextField(1)中,有提过说wordwrap autosize text对width都有决定作用。只是上面的例子都有一个特点就是,在设置wordwrap,autosize text这些属性后,就立即去读取textfield的width~

而通过这篇文章的例子可以看出,wordwrap autosize text对width都有决定作用,但都不是在设置wordwrap,autosize,text属性的时候就立即修改width属性!!

而是在获取或设置width属性时,flash通过wordwrap autosize text这些影响因素动态的计算width结果然后返回。

同样,在设置text的x,y坐标时,也flash也会计算textfield的width!!

textfield内部有一个字段(姑且称为_width),在获取textfield的width属性时,

如果需要计算(在wordwarp为false的时候),就进行计算,并用_width保存这个计算结果,之后返回_width,

如果不需要计算(在wordwarp为true的时候)就直接返回_width属性的值,但这时,_width属性并不是正确的,

因为在设置wordwrap为true以后,再修改text属性,应该是会导致width发生变化的,但实际上,textfield的width在设置wordwrap为true之后无论text是什么都不会再变了。

这样子就比较好解释上面的代码,为什么设置了width或者x属性时,stage上的textfield就看不到了。

因为在设置width或者x属性时,textfield的width就会被动态计算,示例代码中autosize为left,text为空,那么width在计算时就由初始值变成了4,而之后因为设置了wordwrap属性为true,当再设置text的时候,textfield的width并不会发生改变。所以textfield的width就一直是4,stage上就看不到这个textfield了.

wordwrap这个和类的构造函数有点类似,

当自定义了类的构造函数,系统不在为你添加默认构造函数了

当设置了wordwrap为true时,系统就默认你自定义了textfield的width(这个值就是在设置),之后在需要width属性时就不再计算了。

神奇的TextField(2)的更多相关文章

  1. 神奇的TextField(1)

    先看一大段测试代码,每个小方法的注释行是输出结果. private var text_content:TextField; private function textFieldDemo():void{ ...

  2. ios设置textField只能输入数字用于电话号码

    首先在.xib中将UITextField的Keyboard设置为Number Pad,但是使用时键盘会切回别的键盘无法对内容进行校验.通过神奇的百度我知道了通过以下方法可以解决这样的问题: 首先让.x ...

  3. 模型层字段-多表查询-神奇的双下划线查询-F,Q查询

    Django ORM中常用的字段和参数 常用字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. In ...

  4. BZOJ 1006 【HNOI2008】 神奇的国度

    题目链接:神奇的国度 一篇论文题--神奇的弦图,神奇的MCS-- 感觉我没有什么需要多说的,这里简单介绍一下MCS: 我们给每个点记录一个权值,从后往前依次确定完美消除序列中的点,每次选择权值最大的一 ...

  5. 前端精选文摘:BFC 神奇背后的原理

    BFC 已经是一个耳听熟闻的词语了,网上有许多关于 BFC 的文章,介绍了如何触发 BFC 以及 BFC 的一些用处(如清浮动,防止 margin 重叠等).虽然我知道如何利用 BFC 解决这些问题, ...

  6. TextField和TextView的限制输入长度

    TextField的限制代理方法 只需要在这个代理方法里面code这样的代码就可以了 16 是长度可以自己设置 - (BOOL)textField:(UITextField *)textField s ...

  7. MVC系列——MVC源码学习:打造自己的MVC框架(四:了解神奇的视图引擎)

    前言:通过之前的三篇介绍,我们基本上完成了从请求发出到路由匹配.再到控制器的激活,再到Action的执行这些个过程.今天还是趁热打铁,将我们的View也来完善下,也让整个系列相对完整,博主不希望烂尾. ...

  8. 一行神奇的javascript代码

    写本篇文章的缘由是之前群里@墨尘发了一段js代码,如下: (!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~ ...

  9. [翻译svg教程]Path元素 svg中最神奇的元素!

    先看一个实例 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999 ...

随机推荐

  1. hive--udf函数(开发-4种加载方式)

    UDF函数开发 标准函数(UDF):以一行数据中的一列或者多列数据作为参数然后返回解雇欧式一个值的函数,同样也可以返回一个复杂的对象,例如array,map,struct. 聚合函数(UDAF):接受 ...

  2. Spring中的定时调度(Scheduling)和线程池(Thread Pooling)

    使用triggers和SchedulerFactoryBean来包装任务 我们已经创建了job details,jobs.我们同时回顾了允许你调用特定对象上某一个方法的便捷的bean. 当然我们仍需要 ...

  3. Hadoop中RPC协议小例子报错java.lang.reflect.UndeclaredThrowableException解决方法

    最近在学习传智播客吴超老师的Hadoop视频,里面他在讲解RPC通信原理的过程中给了一个RPC的小例子,但是自己编写的过程中遇到一个小错误,整理如下: log4j:WARN No appenders ...

  4. AFNetworking 3.0 解决加密后请求参数是字符串问题

    把整个请求参数的json加密生成一个字符串传给服务器,错误提示:[NSJSONSerialization dataWithJSONObject:options:error:]: Invalid top ...

  5. Linux关于yum命令Error: Cannot retrieve repository metadata (repomd.xml) for repository:xxxxxx.

    Linux关于yum命令Error: Cannot retrieve repository metadata (repomd.xml) for repository:xxxxxx. 问题: Linux ...

  6. shell脚本 入门 —— 符号篇

    shell Shell就是一个命令行解释器,它的作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行一条,这种方式称为交互式(Interactive). Shell还有一种执行命令的方式称 ...

  7. GRE/GMAT/LSAT长难句300例精讲精练-思维导图

    <GRE/GMAT/LSAT长难句300例精讲精练>是GRE超人气名师陈琦老师团队的又一本新作,也是“再要你命3000”的新成员,从之前的词汇.短语.练习,提升到长难句层面,相信学完本书后 ...

  8. 无网络环境用pip安装python类包

    1.现在有网络的电脑安装相应的包 pip install django 2.安装完成后 打包 1)新建一个文件夹(package),用来存放包: 2)执行 pip list #查看安装的包 pip f ...

  9. Java容器_01

    1. HashTable 和 HashMap 区别? 2.

  10. Ceph 纠删码介绍

    http://ceph.org.cn/2016/08/01/ceph-%E7%BA%A0%E5%88%A0%E7%A0%81%E4%BB%8B%E7%BB%8D/