我无法访问stage.stageWidth AS3

时间:2014-06-13 13:41:25

标签: actionscript-3

为什么我无法访问班级中的stage.stageWidth?在我的主要文件中似乎没问题。

  

var b:Number = stage.stageWidth;

     

追踪(b);

TypeError:错误#1009:无法访问空对象引用的属性或方法。

由于

2 个答案:

答案 0 :(得分:1)

问题是stage是null。您需要添加一个事件侦听器,以便在舞台可用时进行侦听。在构造函数中添加一个事件侦听器:

addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);

你和处理程序onAddedToStage来处理对处理阶段及其属性的方法的调用。

答案 1 :(得分:1)

正如Creative Magic所写,您可以使用Event.ADDED_TO_STAGE。

如果你的对象永远不会被添加到舞台上,你仍然需要使用stageWidth,你可以做两件事:

1)使用构造函数传递stage对象,或者在调用类的公共方法时:

//called from the main class:
var myCustomClassInstance:MyCustomClass = new MyCustomClass(stage);
//and/or
myCustomClassInstance.someMethod(stage);

2)在主类中创建一个静态函数,返回阶段:

//code in the main class:
private static var _stage:Stage;

public function Main() {
    _stage = this.stage;
}

public static function getStage():Stage {
    return _stage;
}
//code in custom class:
private function someFunctionWhereYouNeedStage():void {
    var stage:Stage = Main.getStage();
    trace(stage.stageWidth);
}