只有在动作完成后才渲染MXML组件
问题描述:
在我的mxml文件中,我正在脚本标记中进行一些计算,并将它们绑定到一个自定义组件。只有在动作完成后才渲染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}"/>
问题是在运行actionscript之前正在创建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创建组件,但控制它的<myComp:Ball>
被创建后,才init()
运行和calc1
calc2
评估?
答
试试你的增值经销商设置为零值第一:
[Bindable] public var calc1:Number = 0;
[Bindable] public var calc2:Number = 0;
然后调用creationComplete功能:
<mycomp:Ball
compfield1="{calc1}"
compfield2="{calc2}"
creationComplete="init()"/>
谢谢,会尝试一下,并取回。 – basicblock 2010-04-02 14:51:42
没有真正解决我的问题,但我猜它与我的代码有关,所以我选择这个,因为它看起来像一个有效的答案。谢谢您的帮助。 – basicblock 2010-04-03 05:03:09