Flex 3 – 在使用AS3时,我必须在设置属性之前添加组件吗?
发布时间:2020-12-15 01:44:45 所属栏目:百科 来源:网络整理
导读:让我们说我有一个Flex 3 mxml组件,称之为A. A有一个名为’b’的get / set属性.在A中我有另一个内部组件C,它是使用mxml指定的.当在mxml中“实例化”组件A时,我可以在声明时指定b的值,一切正常.但是,当我使用Actionscript初始化组件时,我必须先将组件添加到渲
让我们说我有一个Flex 3 mxml组件,称之为A. A有一个名为’b’的get / set属性.在A中我有另一个内部组件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); 另一方面,以下任何一种都可行 <customNamespace:A b="woopy"/> 要么 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的内部状态而言. 解决方法
要强制控件创建其子控件,您必须调用initialize方法.
即这应该工作: var a:A = new A(); a.initialize(); a.b = "woopy"; this.addChild(a); 但是,在声明mxml控件时我到目前为止所做的是将内部控件绑定到脚本块中声明的公共变量.例如 <?xml version="1.0" encoding="utf-8"?> <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[ [Bindable] public var labelText:String = "[Default]"; ]]> </mx:Script> <mx:Label text="{labelText}"/> </mx:Canvas> 这样您就可以设置参数,而无需担心控件是否已创建. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |