когда сцена становится инициализированной? - PullRequest
0 голосов
/ 05 марта 2009

У меня есть одноэлементный класс, который наследует от спрайта, чтобы он мог получить доступ к сцене, как это ..

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()

Если я заменяю stage.width на int, код выполняется ОК. это потому, что объект не был добавлен в displayList дочерних элементов сцены?

Спасибо

1 Ответ

3 голосов
/ 05 марта 2009

Да. Sprite будет иметь свойство stage только после того, как станет частью списка отображения.
Чтобы попасть на сцену, вам нужно будет либо дать вашему синглтону ссылку на сцену, либо добавить ее в список отображения. Если вы выберете последнее, вы можете добавить прослушиватель Event.ADDED_TO_STAGE и обработать его соответствующим образом внутри вашего синглтона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...