舞台何时初始化?

时间:2009-03-05 14:01:45

标签: actionscript-3

我有一个从sprite继承的单例类,以便它可以访问舞台,就像这样..

package  
{
    import flash.display.Sprite;

    public class C extends Sprite
    {   
        private var _grid:Array = new Array();

        public function get Grid():Array
        {
            return _grid;
        }       

        private static var _instance:C;

        public static function get Instance():C
        {
            if (_instance == null)
            {
                _instance = new C();
            }

            return _instance;
        }

        function C() 
        {
            this.InitGrid();
        }

        private function InitGrid():void 
        {
            var gridWidth:Number = stage.width / 10;
        }
    }
}

这会引发错误

TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at C/InitGrid()
    at C()
    at C$/get Instance()
    at C()
    at Main()

如果我用int替换stage.width,代码执行OK。 这是因为该对象尚未添加到舞台的任何子节目的displayList中吗?

由于

1 个答案:

答案 0 :(得分:3)

是。一旦Sprite成为Display列表的一部分,Sprite将只有一个stage属性 要获得舞台,您需要为您的单身人士提供舞台的参考或将其添加到“显示”列表中。如果你选择后者,你可以添加一个监听器Event.ADDED_TO_STAGE,并在你的单身内部相应地处理它。