ActionScript 3.0 stageWidth в пользовательском классе
-
19-09-2019 - |
Вопрос
Как получить доступ к свойствам класса Stage в Costum Class?
Сорт:
package {
import Main;
import flash.events.*;
import flash.display.Sprite;
import flash.display.Stage;
public class Run extends Sprite {
var obj:a1_spr;
public function Run() {
runAssets();
}
private function runAssets():void {
obj = new a1_spr()
addChild(obj);
obj.x = stage.stageWidth/2;
}
}
}
Выход:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
Решение
this.addEventListener(Event.ADDED_TO_STAGE, handleAdedToStage)
private function handleAddedToStage(event:Event):void
{
this.runAssets()
}
private function runAssets():void
{
obj = new a1_spr();
addChild(obj);
obj.x = this.stage.stageWidth/2;
}
У вас не будет доступа к сцене в конструкторе (если вы не добавите сцену в класс).Спрайт имеет свойство stage.
Другие советы
Чтобы расширить то, что сказал Джоэл, и поместить это в контекст:
Каждый экранный объект имеет свойство .stage, но это свойство имеет значение null, пока вы не добавите отображаемый объект в список отображения.Таким образом, во время строительства вы никогда не сможете получить к нему доступ (потому что он будет добавлен позже).
Событие ADDED_TO_STAGE запускается, когда вы добавляете объект на сцену, сообщая, что свойство .stage теперь заполнено.После этого вы сможете получить доступ к сцене из любого места вашего объекта.
Надеюсь, это прояснит вам ситуацию.
когда Flash компилирует ресурсы fla с вашими файлами .as, этапа нет.поэтому код инициируется как подготовка к вашему классу документов, вам нужно прослушать, есть ли этап, на котором его можно отобразить.
вот почему вы слушаете ADDED_TO_STAGE, чтобы проверить, действительно ли он находится в списке отображения.
Эта проблема возникает для всех экранных объектов, поскольку их необходимо добавлять в список отображения при наличии фактического этапа.
привыкните добавлять этого слушателя и проверять наличие сцены.особенно когда вы работаете в команде и создаете свои собственные компоненты в более крупном проекте.