Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   hitTest "перегружает" систему (http://www.flasher.ru/forum/showthread.php?t=170504)

Evgan 26.10.2011 12:21

hitTest "перегружает" систему
 
Здравствуйте

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

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

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

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

goodguy 26.10.2011 12:28

Цитата:

Но вот проблема, при многочисленных рестартах игры (без перегрузки flash плеера), игра начинает заметно подтормаживать
Цитата:

Может как то надобно чистить что то связанное с hitTest?
Естественно надо чистить весь хлам. И не связанный с конкретно хиттестом, а вообще, удалять все созданные объекты. Здесь они явно остаются висеть в памяти и проссчитываться после каждого рестарта

Evgan 26.10.2011 12:36

ну я удаляю их
вот касательно hitTesta что делать то?

mooncar 26.10.2011 13:11

Сам по себе метод MovieClip.hitTest ничего такого после себя не оставляет, будучи вызванным.
Важно то, как именно вы производите проверку на hitTest.
Если через обработчик onEnterFrame, то нужно удалять его при рестарте.
Примерно так:
Код AS1/AS2:

delete someMc.onEnterFrame ;

Если через setInterval, то интервал нужно очищать.
Примерно так:
Код AS1/AS2:

clearInterval(checkHitTest);


Evgan 26.10.2011 13:21

все интервалы удалю
странно это всё+(
Значит hitTest ничего после себя не оставляет...
Буду искать дальше причину

mooncar 26.10.2011 13:28

Возможно, какие-то объекты не удаляются.
Попробуйте в цикле перебора объектов для проверке выполнять трейс, что именно перебирается и делать рестарты. Что-то может обнаружится.

goodguy 26.10.2011 13:39

Цитата:

странно это всё+(
Абсолютно ничего странного
Цитата:

ну я удаляю их
Как именно?


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

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