Если объект не находится на стадии отображения, объект stage
будет неопределенным (или нулевым). Вы должны addChild
объект, чтобы объект stage
имел значение.
Редактировать: Возможно, вы можете справиться с этим в обработчике событий?
protected function clickHandler(e :Event) :void {
if (e.target.stage) {
e.target.stage.removeEventListener(...);
}
}
Edit2: у статических методов нет этапа, поэтому для решения вашей проблемы вы можете сделать свой основной класс синглтоном и работать так:
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-класс является основным классом проекта, вам необходимо присвоить значение статической переменной instance
в конструкторе.