Я создаю свой первый AS3 с FlashDevelop, и я не понимаю значение инструкций в конструкторе:
package
{
import flash.display.Sprite;
import flash.events.Event;
public class Main extends Sprite
{
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
}
}
}
Что делает if (stage) init();
средний? Что такое Событие. ADDED_TO_STAGE? Почему удаляют слушателя в init()
?
Главный класс - это обычно класс документа -> класс, который помещается в этап (корень дерева отображения) первым. Это означает, что в конструкторе (функция Main) у вас уже есть доступ к stage.
if(stage) init();
фактически означает, что если stage! = Null, запустить инициализацию.
зачем проверять на null в классе документа?
Если ваш swf-файл обернут в другой файл swf. Ваша функция Main еще не будет иметь доступа к сцене, потому что только спрайты (видеоклипы и т. Д.), Которые находятся в дереве отображения (на сцене), имеют доступ к сцене.
Примерно так:
var mc:MovieClip = new MovieClip();//mc.stage == null
stage.addChild(mc);//mc.stage != null
Итак, добавляя слушателя к ADDED_TO_STAGE, вы ждете, пока у вас действительно будет доступ к сцене, а затем инициализируете его. Вы сразу же удаляете слушателя, потому что он вам больше не нужен.
Это обычная ситуация в классе документа (основном), потому что вам нужна сцена, чтобы добавить свое меню, вступление, что угодно в сцену, чтобы она была видна.