访问主类阶段事件侦听器

时间:2010-04-13 09:10:33

标签: actionscript-3

我想从主类阶段删除一个事件监听器,但是我收到错误1120: Access of undefined property stage.我如何实际访问该阶段?

自定义类:

import main;
main.disableVcam();

主要课程:

public static function disableVcam():void {
            trace("disable");
            stage.removeEventListener(MouseEvent.MOUSE_MOVE, movevC);
        }

1 个答案:

答案 0 :(得分:0)

除非对象在显示阶段,否则stage对象将是未定义的(或null)。您必须addChild stage对象的对象才能拥有值。

编辑:也许你可以在事件处理程序中处理它?<​​/ p>

protected function clickHandler(e :Event) :void {
    if (e.target.stage) {
        e.target.stage.removeEventListener(...);
    }
}

Edit2:静态方法没有阶段,所以为了解决你的问题,你可以让你的Main-class成为单例,并且像这样工作:

public class Main {
    static private var instance :Main;

    static public function getInstance() :Main {
        if (Main.instance == undefined) {
            Main.instance = new Main();
        }

        return Main.instance;
    }

    // The rest of the class goes here
}


// snip

import Main;

public static function disableVcam():void {
    trace("disable");
    Main.getInstance().stage.removeEventListener(MouseEvent.MOUSE_MOVE, movevC);
}

如果您的Main-class是项目的主类,则需要在构造函数中指定静态instance变量的值。