Показать сообщение отдельно
Старый 12.09.2013, 17:33
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 2  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Малоизвестный факт про добавление/удаление в списке отображения:
http://flashgameblogs.ru/blog/actionscript/32.html
Т.е. объекты быстро удаляются из начала списка отображения (removeChildAt(0)).
По логике, добавляться тоже должны быстрее в начало(сам не проверял, там всётки есть проверка на наличие объекта и просто ли они по parent смотрят или по списку бегают - не знаю)

А вообще по поводу производительности addChild/RemoveChild - оно всё в AS3 не быстро работает, даже a > 0 ? a : -a работает в несколько раз быстрее Math.abs(a), потому что вызов функции жутко медленный. Так что если проблем нет - не заморачивайтесь с отрисовкой в битмап-дату (там надо очень хорошо знать что делаешь, иначе только медленнее получится)

Что касается событий:
- ADDED_TO_STAGE, REMOVED_FROM_STAGE, и т.д. вобщем не создаются, если на них не подписываться, ну проверка наличия слушателя выполняется, но это не дорого.
- Мышиные события могут вызывать тормоза при большом количестве объектов (сама проверка положения мыши не дешёвой становится при таком количестве). Лечится сначала выставлением всяческих mouseEnabled/mouseChildrenEnabled в false, а потом удалением выходящих за пределы экрана спрайтов из списка отображения(в памяти они никому не мешают даже в больших количествах, достаточно из списка убрать). Проверяется, в обработке ли событий дело, тем, что fps падает при двидении мышью над флешкой.

А вообще, если нужна производительность, то используйте Starling (сам не использовал). Там принципиально другая схема работы с выводом на экран, с задействованием возможностей видеокарты, и обработка мыши, соответственно другая. Там сложнее несколько в том плане, что текстуры придется подготавливать, работать только с растром, на треугольники ваши спрайты разбивать и т.д.