在实例化Stage类之前,我可以在AS3中访问舞台尺寸吗?

时间:2017-01-05 01:07:13

标签: actionscript-3 flex flashdevelop

我有一个依赖于构造函数中舞台宽度的类。我不需要在应用程序第一次加载时构造它,但我仍然得到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

0 个答案:

没有答案