【发布时间】:2010-04-02 14:36:20
【问题描述】:
在我的 mxml 文件中,我正在脚本标签中进行一些计算,并将它们绑定到自定义组件。
<fx:Script>
<![CDATA[
[Bindable] public var calc1:Number;
[Bindable] public var calc2:Number;
private function init():void {
calc1 = //calculation;
calc2 = //calculation;
}
]]>
</fx:Script>
<mycomp:Ball compfield1="{calc1}" compfield2="{calc2}"/>
问题是在运行动作脚本之前创建了 mxml 组件。因此,当创建组件时,它实际上并没有得到calc1 和calc2,并且从那时起它就失败了。我知道绑定是在那之后发生的,但是组件及其函数已经启动并以 null 或 0 初始值运行。
我的解决方案是在创建 calc1 和 calc2 之后立即在 actionscript 中创建组件。这样我就可以精确控制它的创建时间
<fx:Script>
<![CDATA[
[Bindable] public var calc1:Number;
[Bindable] public var calc2:Number;
private function init():void {
calc1 = //calculation;
calc2 = //calculation;
var Ball:Ball = new Ball(calc1, calc2);
}
]]>
</fx:Script>
但是由于我设置组件的方式,这会产生各种其他问题。
有没有办法我仍然可以使用 mxml 来创建组件,但控制它只有在 init() 运行和 calc1 calc2 评估后才创建 <myComp:Ball>?
【问题讨论】:
标签: apache-flex actionscript-3 actionscript adobe mxml