Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   При перемещении мыши тормозит флэшка (http://www.flasher.ru/forum/showthread.php?t=164590)

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

Цитата:

Сообщение от vivado (Сообщение 1022530)
Если у тебя вся графика в jpg или в png то переведи все в вектор - будет летать игрушка

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

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

Deimos747 17.08.2011 17:55

Цитата:

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

carrotoff 17.08.2011 17:58

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

tsarapkabel 17.08.2011 18:11

Цитата:

Сообщение от derhab (Сообщение 1022535)
для всех объектов не требующих реагирования на мышь поставьте 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

Цитата:

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

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

derhab 17.08.2011 22:42

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

Deimos747 17.08.2011 22:55

Цитата:

Сообщение от derhab (Сообщение 1022675)
у вас тайлы карты это отдельные дисплей объекты, подписанные на мышиные события?

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

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

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


Часовой пояс GMT +4, время: 15:34.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.