Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.10.2011, 12:21
Evgan вне форума Посмотреть профиль Отправить личное сообщение для Evgan Найти все сообщения от Evgan
  № 1  
Ответить с цитированием
Evgan

Регистрация: Jun 2008
Сообщений: 283
По умолчанию hitTest "перегружает" систему

Здравствуйте

Сделал небольшую простенькую игру, где подводная лодка уклоняется от бомб

Проверка на столкновения производится по средством hitTest (у лодки сделал штук 20 объектов, распределенных по её контуру которые и реагирую на событие).

Вроде как все работает, все взрывается когда надо и где надо. Но вот проблема, при многочисленных рестартах игры (без перегрузки flash плеера), игра начинает заметно подтормаживать (грузит систему). Перепроверил кон несколько раз - нигде периодические функции лишний раз не запускаются. А вот при отключении проверки на hitTest эта проблема исчезла. Именно отключение строчки с if (цикл перебора всех hit объектов оставлял).

Может как то надобно чистить что то связанное с hitTest?

Старый 26.10.2011, 12:28
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 2  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Цитата:
Но вот проблема, при многочисленных рестартах игры (без перегрузки flash плеера), игра начинает заметно подтормаживать
Цитата:
Может как то надобно чистить что то связанное с hitTest?
Естественно надо чистить весь хлам. И не связанный с конкретно хиттестом, а вообще, удалять все созданные объекты. Здесь они явно остаются висеть в памяти и проссчитываться после каждого рестарта

Старый 26.10.2011, 12:36
Evgan вне форума Посмотреть профиль Отправить личное сообщение для Evgan Найти все сообщения от Evgan
  № 3  
Ответить с цитированием
Evgan

Регистрация: Jun 2008
Сообщений: 283
ну я удаляю их
вот касательно hitTesta что делать то?

Старый 26.10.2011, 13:11
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 4  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Сам по себе метод MovieClip.hitTest ничего такого после себя не оставляет, будучи вызванным.
Важно то, как именно вы производите проверку на hitTest.
Если через обработчик onEnterFrame, то нужно удалять его при рестарте.
Примерно так:
Код AS1/AS2:
delete someMc.onEnterFrame ;
Если через setInterval, то интервал нужно очищать.
Примерно так:
Код AS1/AS2:
clearInterval(checkHitTest);
__________________
Идите первым!


Последний раз редактировалось mooncar; 26.10.2011 в 13:17.
Старый 26.10.2011, 13:21
Evgan вне форума Посмотреть профиль Отправить личное сообщение для Evgan Найти все сообщения от Evgan
  № 5  
Ответить с цитированием
Evgan

Регистрация: Jun 2008
Сообщений: 283
все интервалы удалю
странно это всё+(
Значит hitTest ничего после себя не оставляет...
Буду искать дальше причину

Старый 26.10.2011, 13:28
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 6  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Возможно, какие-то объекты не удаляются.
Попробуйте в цикле перебора объектов для проверке выполнять трейс, что именно перебирается и делать рестарты. Что-то может обнаружится.
__________________
Идите первым!

Старый 26.10.2011, 13:39
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 7  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Цитата:
странно это всё+(
Абсолютно ничего странного
Цитата:
ну я удаляю их
Как именно?

Создать новую тему Ответ Часовой пояс GMT +4, время: 14:48.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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