PDA

Просмотр полной версии : При перемещении мыши тормозит флэшка


Deimos747
17.08.2011, 15:21
Здравствуйте! У меня такая проблема: при перемещении мыши по области флэшки, падают fps, от всех лишних событий, вроде бы, отписался. Может кто-то сталкивался с такой проблемой.
Вот сама игра: http://vk.com/app2292679
Жду любых советов по снижению нагрузки)

vivado
17.08.2011, 15:28
Если у тебя вся графика в jpg или в png то переведи все в вектор - будет летать игрушка

КорДум
17.08.2011, 15:29
Если у тебя вся графика в jpg или в png то переведи все в вектор - будет летать игрушка
Откуда такие выводы?

Deimos747
17.08.2011, 15:31
Графика вся в PNG, разве это даст заметное ускорение?

КорДум
17.08.2011, 15:32
Наоборот. FP тратит намного больше ресурсов для отрисовки вектора, чем растра.

derhab
17.08.2011, 15:38
для всех объектов не требующих реагирования на мышь поставьте mouseEnabled = mouseChildren = false

Deimos747
17.08.2011, 15:46
derhab, спасибо! попробую)

carrotoff
17.08.2011, 17:50
Если у тебя вся графика в jpg или в png то переведи все в вектор - будет летать игрушка

Помнится, приходилось кэшировать все векторные объекты, которые убивали полностью фпс.
Хоть расход памяти заметно увеличился, но нагрузка на процессор упала ОЧЕНЬ заметно. И всё полетело, как надо. Так что это более чем сомнительная рекомендация.

А по сути вопроса: нужно выявить сначала слабое место, а потом искать способ оптимизации.

Deimos747
17.08.2011, 17:55
А по сути вопроса: нужно выявить сначала слабое место, а потом искать способ оптимизации.
Слабые места я сейчас и ищу, вот и спрашиваю у более опытных совета, где искать)

carrotoff
17.08.2011, 17:58
Если сильные тормоза - то, предполагаю, много вектора, анимированного

tsarapkabel
17.08.2011, 18:11
для всех объектов не требующих реагирования на мышь поставьте mouseEnabled = mouseChildren = false
Задам глупый вопрос. Если поставить мувику mouseChildren = false, надо ли потом его ребёнку делать mouseEnabled = false, или операции эквивалентны?

derhab
17.08.2011, 18:16
нет, не надо, эквивалентны

arkadattx
17.08.2011, 18:38
Большое количество покадровой вложенной анимации может снизить fps

Deimos747
17.08.2011, 19:39
Если у объекта Sprite свойство visible = false то он учитывается при построении отображения кадра?

derhab
17.08.2011, 20:28
нет, объект не рендерится, производятся только вычисления связанные с объектом

Aquahawk
17.08.2011, 20:32
А вы трейсов не делаете на каждый mouseMove Я такое наблюдал когда трейсы идут. Соберите в релизе и выставьте галочку omit trace actions(если мы в Flash IDE) возможно проблема в этом.

Deimos747
17.08.2011, 22:28
А вы трейсов не делаете на каждый mouseMove Я такое наблюдал когда трейсы идут. Соберите в релизе и выставьте галочку omit trace actions(если мы в Flash IDE) возможно проблема в этом.

Нет, там вообще подпись на события наведения только на подсвечиваемые объекты, остальные подписаны только на клики. А тормозит именно при перемещении.

derhab
17.08.2011, 22:42
у вас тайлы карты это отдельные дисплей объекты, подписанные на мышиные события?

Deimos747
17.08.2011, 22:55
у вас тайлы карты это отдельные дисплей объекты, подписанные на мышиные события?

Да! Реализовано отдельными спрайтами

derhab
17.08.2011, 23:01
если есть возможность, то в качестве карты местности лучше использовать растр в отдельном спрайте, у которого отключены мышиные события
а тайловая сетка это отдельный программный объект, то есть по какому именно тайлу был произведен клик определяется простым вычислением.

Deimos747
17.08.2011, 23:05
Весь растр в спрайтах -за пределами экрана им прописываются значения visible=false. А ниже слой со спрайтами "уловителями событий" - если я объединю его, будет быстрее? Боюсь, что отслеживание за выделяемыми объектами съест преимущество

derhab
17.08.2011, 23:33
У вас огромное количество объектов реагирует на мышь. Если сделать этим объектам mouseEnabled = mouseChildren = false - тормоза уйдут. Как это реализовать в контексте вашей архитектуры, это другой вопрос, возможно придется что-то перестроить.

Deimos747
17.08.2011, 23:36
Большое спасибо за разъяснения=) Попробую, если будет прирост, то переделаю)

TanaTiX
18.08.2011, 00:14
за пределами экрана им прописываются значения visible=false
лучше удаляйте

carrotoff
18.08.2011, 10:30
Весь растр в спрайтах -за пределами экрана им прописываются значения visible=false

За экраном не стоит ничего держать, на эти объекты тратятся ресурсы

Deimos747
18.08.2011, 13:53
Предметы за экраном проще хранить, чем заново подгружать, больше памяти расходуется, но работает быстрее. А вот то что их совсем удалять из отображения, я не подумал, спасибо за совет)