我有一个依赖于构造函数中舞台宽度的类。我不需要在应用程序第一次加载时构造它,但我仍然得到1009错误(尝试访问空对象),因为该阶段尚未实例化,我猜它在编译时检查所有构造函数以确保一切都在编译时可用......很好。
我可以使用变量来保存宽度值,然后在舞台改变大小时更新该值,但我想要一个更优雅的方法。有没有办法在实例化之前访问舞台属性?还是有另一种方法可以做到这一点吗?
我正在使用Flex SDK编译AIR for desktop,并在FlashDevelop中编码。
我的强制性代码:
public class MouseSenseWindow extends Sprite {
private var _sensitivity:Number = 1;
private var _bounds:Rectangle = new Rectangle(0,0,stage.stageWidth,stage.stageHeight);
public function MouseSenseWindow(sense:Number):void{
sensitivity = sense;
drawBox();
addEventListener(MouseEvent.MOUSE_MOVE, mouseHit);
}
private function mouseHit(me:MouseEvent):void {
removeEventListener(MouseEvent.MOUSE_MOVE, mouseHit);
grab();
}
private function drawBox():void{
graphics.clear();
graphics.beginFill( 0, 0 );
graphics.drawRect( 0, 0, stage.stageWidth / _sensitivity, stage.stageHeight );
graphics.endFill();
}
public function grab():void{
startDrag(false, _bounds);
}
public function get sensitivity():Number{return _sensitivity;}
public function set sensitivity(s:Number):void{
_sensitivity = s;
drawBox();
}
} //end class