Вопрос

У меня часто есть проблемы с моим кодом, если у меня нет следующего в моем конструкторе:

addEventListener(Event.ADDED_TO_STAGE, init, false, 0, true);

Как только я выполняю код после Мой класс MoveieClip или документы был добавлен на сцену, кажется, работает лучше ... но почему это?

Это было полезно?

Решение

Подумайте об этом так: если ваш класс построен, это может быть из какого -то хостингового кода, который выглядит примерно так:

var newComponent = new TheComponent();
parentElement.addChild(newComponent)

Итак, если вы выполняете код в конструкторе, вы выполняете код, который еще не полностью подключен. Например, у вас никогда не будет родителя в вашем конструкторе, потому что вы еще не были добавлены в иерархию.

Конечно, некоторые вещи будут работать ... например, любой код, который не зависит от того, чтобы быть частью визуального дерева, будет работать. Но любой код, который опирается на знание того, что является частью более крупной системы, необходимо будет выполняться после его добавления на сцену.

Это помогает?

Другие советы

Добавление в объяснение Брайана, добавленная_to_stage для облегчения управления объектом в одном классе. Позволяя объекту знать, когда он добавлен и удален с этой стадии, вы имеете его управление его самостоятельно. Скажите, начинать анимацию в методе обработчика или остановить ее при удалении. Обычно без этого события вам нужно будет, чтобы объект добавил его в начало сцены и остановиться.

Думайте о структуре событий как о плате автоматизации, которая называется методами/функциями, когда транслируется конкретное событие. Поскольку добавленный_TO_STAGE отправляется и объект в методе ADDCHILD, он похож на вызов пользовательского метода bind ().

package{
 class Main extends Sprite{
  public Main(){
   // called on instantiation.
  }
  public function bind():void{
   //called later in the stack, either by ADDED_TO_STAGE or main.bind()
  }
 }
}

Это потому, что эти свойства (x, y, alpha) инициализируются в методе AddChild. Это делается по причинам управления памятью. Зачем выделять несколько укусов для чего -то, что не будет обработано, пока объект не достигнет стадии.

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