当前位置:  开发笔记 > 编程语言 > 正文

Flex 3 - 在使用AS3时,我必须在设置属性之前添加组件吗?

如何解决《Flex3-在使用AS3时,我必须在设置属性之前添加组件吗?》经验,为你挑选了1个好方法。

让我们说我有一个Flex 3 mxml组件,称之为A. A有一个名为'b'的get/set属性.在AI中有另一个内部组件C,使用mxml指定.当在mxml中"实例化"组件A时,我可以在声明时指定b的值,一切正常.但是,当我使用Actionscript初始化组件时,我必须先将组件添加到渲染容器中,然后才能设置所述组件的属性(在本例中为"b").当属性'b'的setter以某种方式访问​​A中的C时会发生这种情况.

所以,这在运行时失败了(它说C是null)......

var a:A = new A();
a.b = "woopy"; //Sets the Label (declared in mxml) withn A to "woopy"
this.addChild(a);

另一方面,以下任何一种都可行


要么

var a:A = new A();
this.addChild(a);
a.b = "woopy"; //Sets the Label (declared in mxml) withn A to "woopy"

如图所示,在将组件添加到容器后设置属性时,不会引发运行时错误消息.好吧,这是有道理的,我想在组件添加到容器之前,实际上并没有创建组件的内部.不过,这有点烦人.有没有办法保证组件内部完全呈现而不将其添加到容器中?当我使用actionscript vs mxml时,我不喜欢它的感觉.我想要一个解决方案,以便基本上在没有属性"arguments"的mxml中声明A等同于在AS中使用new运算符声明A. 至少,就A的内部状态而言.



1> inferis..:

要强制控件创建其子控件,您必须调用initialize方法.

即这应该工作:

var a:A = new A();
a.initialize();
a.b = "woopy";
this.addChild(a);

但是,在声明mxml控件时我到目前为止所做的是将内部控件绑定到脚本块中声明的公共变量.例如



    
        
    
    

这样您就可以设置参数,而无需担心控件是否已创建.

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有