Когда вы можете получить доступ к экземпляру сцены? - PullRequest
0 голосов
/ 04 апреля 2011

Я использую Flash CS5.У меня на сцене есть несколько экземпляров, объявленных в основном классе, и я хочу присоединить к ним некоторые события, однако во время конструктора основного класса они объявляются как нулевые.

Что является лучшим методом для доступаинсценировки?Могу ли я добавить обработчик событий, который сообщит мне, когда будут заполнены свойства экземпляра этапа?

Простой пример:

  public class bleepBloop extends MovieClip {

    public var productName:TLFTextField;

    public function bleepBloop() {
      trace( productName ); // Here it is null
    }

  }

Однако, когда я получаю доступ к productName позже, он определяется.

1 Ответ

1 голос
/ 04 апреля 2011

Редактировать : Я ответил на другой вопрос ... Извините за это! Надеюсь, это ответит на ваш актуальный вопрос.

Экземпляры сцены внутри мувиклипа должны быть инициализированы, как только вы перейдете к кадру, который фактически содержит этот дочерний элемент:

trace(productName); // will trace null if productName isn't on the current frame
gotoAndStop(frameWithProductName);
trace(productName); // should now be initialized (when publishing for Flash Player 10+)

Если экземпляры находятся в кадре 1, они должны быть инициализированы и доступны сразу в конструкторе. В противном случае, одним из решений будет размещение некоторого кода временной шкалы, который добавляет желаемых слушателей в кадр, где появляются экземпляры. Обратите внимание, что эти экземпляры фактически воссоздаются, когда они исчезают и появляются снова (когда вы покидаете и повторно вводите этот кадр), поэтому в этом случае вы должны перечитать слушателей. Размещение кода слушателя на этом кадре позаботится об этом.

В качестве альтернативы, вы можете прослушивать, когда событие ADDED_TO_STAGE запускается с конкретным объектом, который вас интересует:

public function bleepBloop() {
    addEventListener(Event.ADDED_TO_STAGE, onAddedToStage, true); // true to listen for children (capture phase)
}

private function onAddedToStage(event:Event):void {
    if(event.target == productName) {
        // add listeners
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...