Проблема с нулевой ссылкой на свойства сцены в AS3 - PullRequest
2 голосов
/ 07 сентября 2011

Я делаю сайт на Flash, закодированный во flashbuilder.Всякий раз, когда я пытаюсь экспортировать свой код, я снова и снова получаю ту же ошибку (TypeError = см. Ниже).

Я думаю, что проблема как-то связана со стадией моего проекта.Всякий раз, когда я меняю var stageMiddenX = (stage.stageWidth / 2); на var stageMiddenX = 512;, код работает.но я не хочу, чтобы переменная была динамической.

Ошибка TypeError # 1009: невозможно получить доступ к свойству или методу пустой ссылки на объект в main ()

package {
import flash.display.MovieClip;

  public class main extends MovieClip{
    var stageMiddenX = (stage.stageWidth / 2);
    var stageMiddenY = (stage.stageHeight / 2);
    private var object1:Object1 = new Object1();
    private var object2:Object2 = new Object2();
    private var object3:Object3 = new Object3();
  }
}

Ответы [ 2 ]

6 голосов
/ 07 сентября 2011

Проблема здесь в том, что stage еще не доступен в то время, когда вы запрашиваете его.

Вы должны подождать, пока не будет запущено событие Event.ADDED_TO_STAGE, прежде чем пытаться получить доступ к stage.

package {
    import flash.display.MovieClip;

    public class main extends MovieClip{
        private var object1:Object1 = new Object1();
        private var object2:Object2 = new Object2();
        private var object3:Object3 = new Object3();
        private var stageMiddenX:Number;
        private var stageMiddenY:Number;

        public function main(){
            if(stage) init(null);
            else addEventListener(Event.ADDED_TO_STAGE, init)
        }

        private function init(e:Event):void {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            stageMiddenX = (stage.stageWidth / 2);
            stageMiddenY = (stage.stageHeight / 2);
        }
    }
}
1 голос
/ 07 сентября 2011

Поместите этап доступа к материалам в конструктор (при условии, что это ваш класс документа) ..

package
{
    import flash.display.MovieClip;

    public class main extends MovieClip
    {
        public var stageMiddenX:int;
        public var stageMiddenY:int;

        private var object1:Object1 = new Object1();
        private var object2:Object2 = new Object2();
        private var object3:Object3 = new Object3();

        public function main()
        {
            stageMiddenX = stage.stageWidth / 2;
            stageMiddenY = stage.stageHeight / 2;
        }
    }
}
...