Вопрос

Как получить доступ к свойствам класса 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, чтобы проверить, действительно ли он находится в списке отображения.

Эта проблема возникает для всех экранных объектов, поскольку их необходимо добавлять в список отображения при наличии фактического этапа.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top