• 神奇的TextField(2)


    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属性时就不再计算了。

  • 相关阅读:
    实验10:Problem D: STL——管道二
    实验10:Problem C: STL——呵呵型自动机
    实验10:Problem B: STL——哈哈型自动机
    实验10:Problem A: STL——整理唱片
    实验9:Problem I: 学生干部虚基类
    hihocoder1994 树与落叶 DFS+前缀和+二分
    [Offer收割]编程练习赛108
    【模板】左偏树(可并堆)
    P2993 [FJOI2014]最短路径树问题 点分治+最短路
    E
  • 原文地址:https://www.cnblogs.com/tianlanliao/p/3681310.html
Copyright © 2020-2023  润新知