2013-06-20 5 views
1

Итак, я работаю над платформой для платформы 2d, и я получаю # 1009.Ошибка AS3 # 1009 в моем конструкторе?

В моем классе Pickup(), в конструкторе, я пытаюсь установить this.x и this.y на центральную сцену, но это говорит о ссылке на нулевой объект.

public function Pickup() { 
     // constructor code 
     bitmapData.draw(_displayObject);  
     mSprite = new Bitmap(bitmapData); 
     addChild(mSprite); 
     this.x = 
     stage.width/2; 
} 

Я отделил this.x и stage.width, чтобы увидеть, какая часть была запуская нуль, и это определенно этап.

Возможно, что-то настолько ужасно очевидно, что я буду бить себя, не замечая этого.

В любом случае, любая помощь очень ценится.

Приветствия

+0

Как вы разделяете 'this.x' и' stage.width'? – Teejay

+0

Я просто нажал Enter, чтобы увидеть, как они помещаются на отдельных строках, чтобы увидеть, какая строка вызвала ошибку, которую я сейчас вижу, на самом деле является stage.width, которая вызывает ошибку. Вопрос изменен. – DanTheMan

+1

Дождитесь добавления к событию этапа. – Nathan

ответ

0

Свойство stage является null на любой DisplayObject, если он не является на самом деле на сцене.

Это означает, что вам нужно будет добавить прослушиватель событий к объекту, слушающему Event.ADDED_TO_STAGE, а затем работать с stage в обработчике.

В качестве альтернативы, вы можете просто передать ссылку на рабочую конструктору Pickup:

public function Pickup(stage:Stage) 
{ 
    // Your code. 
} 
0

Добавить прослушиватель событий адд на сцене

public function Pickup() { 
    // constructor code 
    bitmapData.draw(_displayObject); 
    mSprite = new Bitmap(bitmapData); 
    addChild(mSprite); 
    this.addEventListener(Event.ADDED_TO_STAGE, onAddToStage); 
} 

protected function onAddToStage(event:Event):void 
{ 
    this.x = stage.width/2; 
}