【问题标题】:Rendering MXML component only after actionscript is finished仅在动作脚本完成后渲染 MXML 组件
【发布时间】: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 组件。因此,当创建组件时,它实际上并没有得到calc1calc2,并且从那时起它就失败了。我知道绑定是在那之后发生的,但是组件及其函数已经启动并以 null 或 0 初始值运行。

我的解决方案是在创建 calc1calc2 之后立即在 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 评估后才创建 &lt;myComp:Ball&gt;

【问题讨论】:

    标签: apache-flex actionscript-3 actionscript adobe mxml


    【解决方案1】:

    先尝试将您的变量设置为零值:

       [Bindable] public var calc1:Number = 0;
       [Bindable] public var calc2:Number = 0;
    

    然后在creationComplete上调用函数:

    <mycomp:Ball 
       compfield1="{calc1}"
       compfield2="{calc2}"
       creationComplete="init()"/>
    

    【讨论】:

    • 谢谢,会试一试,然后回来。
    • 并没有真正解决我的问题,但我猜它与我的代码有关,所以我选择它,因为它似乎是一个有效的答案。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2021-01-29
    • 2018-09-04
    • 2023-02-22
    • 2016-04-17
    • 1970-01-01
    • 2021-08-25
    相关资源
    最近更新 更多