PDA

Просмотр полной версии : Не вызывается событие ENTER_FRAME


Alexmody
21.02.2011, 01:00
Не вызывается событие ENTER_FRAME

Для примера, создаю класс:

public class Fog extends EventDispatcher
{
public function Fog()
{

}
}

При старте игры вызываю
var fog:Fog = new Fog();
fog.addEventListener(Event.ENTER_FRAME, onUpdate);

private function onUpdate (e:Event):void
{
trace("update");
}

Ничего не происходит.

Заменяю с extends EventDispatcher на extends Sprite – каждый фрейм выводится “update”
Видимо ENTER_FRAME, вызывается только у DisplayObject…
А есть ли альтернативное событие для не дисплейных объектов, чтобы каждый кадр вызывалась функция или это только с помощью класса Timer или ф-и SetInterval() ?

scarbo
21.02.2011, 01:02
Оформите код в теги.
ENTER_FRAME вызывается только у дисплейных объектов, если хочется использовать именно его, а не Timer, то можно в классе создать экземпляр Shape (самый легкий дисплэй обджект) и прописать ему слушателя.

spooner
21.02.2011, 01:04
Все вы правильно думаете, и код форомлять надо тэгами.
Не успел )

Bgg
21.02.2011, 01:29
Sprite и так наследник EventDispatcher, зачем вы там что-то заменяете?

ps И зачем классу не наследнику DisplayObject ловить событие ENTER_FRAME? Типо контроллер каких-то визуальных объектов? Тогда и пусть ловит у них это событие.