假设我有一个 Flex 3 mxml 组件,称之为 A。A 有一个名为“b”的 get/set 属性。在 AI 中还有另一个内部组件 C,它是使用 mxml 指定的。在 mxml 中“实例化”组件 A 时,我可以在声明时指定 b 的值,一切正常。但是,当我使用 Actionscript 初始化组件时,我必须先将组件添加到呈现的容器中,然后才能设置所述组件的属性(在本例中为“b”)。当属性“b”的设置器以某种方式访问 A 中的 C 时,就会发生这种情况。
所以,这在运行时失败(它说 C 是空的)......
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 与 mxml 时的不同感觉。我想要一个解决方案,以便基本上在没有属性“参数”的 mxml 中声明 A 等同于在 AS 中使用 new 运算符声明 A。至少,就 A 的内部状态而言。