ActionScript 3 Stage不可用

示例

有时开发人员编写一些希望访问stage或Flash stage的代码来添加侦听器。它可以第一次工作,然后突然失效并产生错误1009。有问题的代码甚至可以在时间线上,因为它是第一个在那里添加代码的方案,而且许多仍然存在的教程使用时间线代码层来放置代码。

public class Main extends MovieClip {
    public function Main() {
        stage.addEventListener(Event.ENTER_FRAME,update); // 这里

该代码不起作用的原因很简单:首先实例化显示对象,然后将其添加到显示列表中,而当它不在显示列表中时,它stage为null。

更糟糕的代码是这样的:

stage.addEventListener(Event.ENTER_FRAME,update); // 这里

放置在时间轴上。它甚至可以工作一段时间,同时Main通过GUI拍打对象将其拍台。然后,从另一个SWF加载他们的SWF,突然代码中断了。发生这种情况是因为,Main当播放器直接加载SWF以及异步处理加载时,的帧以不同的方式构造。解决方案是使用Event.ADDED_TO_STAGE侦听器,并将所有解决阶段的代码放入其中,并将侦听器本身放入AS文件中,而不是在时间轴中。