as3符号变量尚未初始化

时间:2014-03-04 02:25:35

标签: actionscript-3 variables initialization symbols

我正在我的时间轴中初始化符号,并试图访问这些符号中的变量,但它们返回0或未定义,即使我在符号的时间轴中设置变量。由于某种原因,变量尚未设置,但主时间轴可以看到它们存在。如何使程序等到变量设置完成后才会生效?

1 个答案:

答案 0 :(得分:0)

使用类的最佳实践,而不是在MovieClip的时间轴和帧中编码。 我假设你有来自设计师的MovieClip,你想要为特定的帧注入一些逻辑。有很多选择。

<强>事件

您可以在特定框架中触发事件,并以正常方式工作(使用类和类成员)。

//Frame code
import flash.events.Event;

this.dispatchEvent(new Event("IntroDidFinish", true, true));
stop();

//Somewhere in class
myContainer.addEventListener("IntroDidFinish", onIntroFinish, false, 0, true);

function onIntroFinish(e: Event):void{
    //Do your stuff
}

事件可帮助您将逻辑与设计分离(预定义的复杂MovieClip等)

等待初始化

当MovieClip到达某个帧时,您应该等待额外的时间进行初始化。这就是为什么99.9%的AS3开发人员不喜欢MovieClip作为任何关键数据或逻辑的持有者。这意味着如果您调用myMovieClip.goToAndStop(8);,则在goTo操作后无法在myMovieClip.someValue帧中声明8。如果您仍想使用这种方法,最简单的解决方案是Event.ENTER_FRAME,在goTo订阅ENTER_FRAME事件后,只进行一次更新,然后继续工作;)