Форум 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=210621)

Фомич 10.04.2015 15:23

Оптимизация считывания курсора в игре
 
Приветствую! Имеется простая игра, где постоянно считывается положение курсора(вслед ему вращается турель), также есть несколько(не больше шести персонажей) движущихся по экрану. Все бы ничего, но визуально заметно(да и fps отображает), что когда курсор вне флешки(а она не фулскринится, так задумано), то анимация движения и вообще все просто отлично, как только курсор попадает в границы флеша, то падение КПД процентов на 30% и далее сохраняется таким. Что бы это могло быть?
ps Во всей игре всего около дюжины листенеров(считывающих наведение на несколько предметов и меню) и расчет поворота турели берущий положение курсора, не думаю, то это может так сильно влиять на производительность, окажись даже некоторые из них лишними.

KBAC 10.04.2015 15:28

Adobe Scout вам в помощь

caseyryan 10.04.2015 15:52

Цитата:

Adobe Scout вам в помощь
В первую очередь нужно самому свой код проверять. Чем ему поможет скаут?
В коде скорее всего банально слишком много слушателей MOUSE_OVER, MOUSE_OUT (почему-то процентов на 90 уверен, что там именно MOUSE_OVER используется, а не ROLL_OVER, это одна из наиболее распространенных ошибок новичков). Простое получение координат курсора никак на производительность не повлияет.

Фомич 10.04.2015 17:46

Вложений: 1
Установил Adobe Scout, запустил флешку, картина следующая - при нахождении курсора в границах флеша очень много тратится на Button hit testing. Тестово зашторил // все MouseEvent, но ничего особо не изменилось, дало конечно эффект, но незначительный. Что еще может быть? hitTestObject?
Скриншот прикрепил(на графике чередование областей, когда курсор вне флеша и в границах).
Вложение 31509

callme 10.04.2015 19:44

Допустим на флешке у вас лежит три спрайта, в них лежат другие спрайты и так далее.

Чтобы выяснить где именно тормозит, делайте у этих спрайтов поочередно
Код AS3:

mouseChildren = false;
mouseEnabled = false;


Фомич 10.04.2015 20:30

Спасибо за советы, разобрался, отключая/включая участки кода. Помогло кеширование в битмап всех неанимированных объектов.


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

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