У меня есть проект AS3, который я создаю во FlexBuilder.
В конструкторе моего основного класса у меня есть это:
stage.addEventListener(Event.ENTER_FRAME, stage_enterFrameHandler);
А затем функция обработчика событий:
private var tempCounter:uint = 0;
private function stage_enterFrameHandler(event:Event):void
{
stage.removeEventListener(Event.ENTER_FRAME, stage_enterFrameHandler);
tempCounter += 1;
trace(tempCounter);
}
Когда я работаю в режиме отладки, tempCounter записывает один раз, как 1. Почему это? Я думаю, что весь смысл Event.ENTER_FRAME в том, что он продолжает стрелять.
Документация гласит:
Если точка воспроизведения не движется или если имеется только один кадр, это событие отправляется непрерывно в зависимости от частоты кадров. Это событие отправляется одновременно всем экранным объектам, прослушивающим это событие.
Так почему бы мне не увидеть, чтобы счетчик увеличивался примерно в 30 раз в секунду (для этого у меня установлена частота кадров)?
РЕДАКТИРОВАТЬ ПРИМЕЧАНИЕ:
Хорошо, ну, я понял это. Это потому, что я немедленно удаляю список событий. Событие ENTER_FRAME продолжает срабатывать ... Единственная причина, по которой код выполняется таким образом (код, который я унаследовал), заключается в том, что, как я полагаю, CREATION_COMPLETE недоступен, если вы не используете фреймворк flex.