Цитата:
Сообщение от Akopalipsis
Тогда такой вопрос - подписывая circle на ENTER_FRAME, мы передаём listener в EventDispatcher, где он помещается в массив и при каждом тике, вызываются все listeners из массива. Если сделать отдельный класс для ENTER_FRAME, то в моём понимании, это будет выглядеть так - создали экземпляр и чтобы подписаться на его тики, мы передаем в него ссылку на класс с методом, который должен вызываться каждый тик. Передав ссылку в класс ENTER_FRAME, она помещается в массив и каждый тик, этот массив перебирается циклом и вызывает нужный метод. Получается тоже самое.
По этому мне кажется, что я не понимаю, как сделать один класс с ENTER_FRAME. Где я ошибаюсь?
|
Я не знаю, как там во флеше внутри реализована система передачи событий, но то, что одним энтерФрейм-ом быстрее перебрать в массиве все объекты, действительно лучше, чем на каждый объект вешать отдельный энетерФрейм.
Я сделал тест - подписал сто тысяч объектов, каждый на свой ентерФрейм, результат - 5 fps. А когда в цикле пробегал по этим ста тысячам - 16 fps.
Добавлено через 29 минут
LIGHTHILL Не забудьте, когда удаляете экземпляр
CircleAnimation, остановить его внутренний енретФрейм. А то ещё некоторое время будет висеть в памяти, пока сборщик мусора не проснётся.

Код AS3:
circle.stop()