我正在我的时间轴中初始化符号,并试图访问这些符号中的变量,但它们返回0或未定义,即使我在符号的时间轴中设置变量。由于某种原因,变量尚未设置,但主时间轴可以看到它们存在。如何使程序等到变量设置完成后才会生效?
答案 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事件后,只进行一次更新,然后继续工作;)