Actionscript 3 在实例化阶段类之前,我可以访问AS3中的阶段维度吗?
我有一个类,它依赖于构造函数中的stage宽度。我不需要在应用程序第一次加载时构造它,但我仍然得到1009错误(尝试访问空对象),因为该阶段尚未实例化,我猜在编译时它会检查所有构造函数,以确保在编译时所有内容都可用。。。好的 我可以只使用变量来保持宽度值,然后在舞台大小改变时更新该值,但我想要一种更优雅的方法。是否有一种方法可以在实例化阶段属性之前访问它?还是有其他方法可以做到这一点 我正在使用FlexSDK为AIR for desktop进行编译,并在FlashDevelop中进行编码 我的强制性代码:Actionscript 3 在实例化阶段类之前,我可以访问AS3中的阶段维度吗?,actionscript-3,apache-flex,flashdevelop,Actionscript 3,Apache Flex,Flashdevelop,我有一个类,它依赖于构造函数中的stage宽度。我不需要在应用程序第一次加载时构造它,但我仍然得到1009错误(尝试访问空对象),因为该阶段尚未实例化,我猜在编译时它会检查所有构造函数,以确保在编译时所有内容都可用。。。好的 我可以只使用变量来保持宽度值,然后在舞台大小改变时更新该值,但我想要一种更优雅的方法。是否有一种方法可以在实例化阶段属性之前访问它?还是有其他方法可以做到这一点 我正在使用FlexSDK为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
如果你想知道我想要一个更优雅的方法的原因,是我预计窗口大小a)在运行时改变,b)在编译之前改变,以便能够测试不同的屏幕大小,我知道如果每次我想测试一些,我必须改变空气设置和一个全局变量,我会让自己将来头疼新的大小。通常Event.ADDED_TO_STAGE会执行此操作(默认情况下,FD会将捕获此时刻的例程添加到主类中)。问题是,Stage在执行任何代码之前都是实例化的,但是DisplayObject没有访问Stage的权限,除非这个DisplayObject附加到它(直接或通过它的父树)。@Organia啊!我懂了!谢谢你消除了这种困惑!如果你想知道我想要一个更优雅的方法的原因,我希望窗口大小a)在运行时改变,b)在编译之前改变,以便能够测试不同的屏幕大小,我知道如果我必须改变空气设置和全局变量,我会让自己将来头疼每次我都想测试一些新的大小。通常Event.ADDED_to_STAGE会做这件事(默认情况下,FD会将捕捉这一时刻的例程添加到主类中)。问题是,Stage在执行任何代码之前都是实例化的,但是DisplayObject没有访问Stage的权限,除非这个DisplayObject附加到它(直接或通过它的父树)。@Organia啊!我懂了!谢谢你消除了这种困惑!我应该可以从这里开始。