Показать сообщение отдельно
Старый 14.07.2013, 18:13
ndiezel вне форума Посмотреть профиль Отправить личное сообщение для ndiezel Посетить домашнюю страницу ndiezel Найти все сообщения от ndiezel
  № 9  
Ответить с цитированием
ndiezel
 
Аватар для ndiezel

Регистрация: Mar 2009
Адрес: Из города на Ингуле
Сообщений: 116
Отправить сообщение для ndiezel с помощью ICQ
Проблема решилась другим способом.
Когда заканчивалась игра - всё на экране замирало (все функции по созданию объектов, перемещению и проверки на столкновения не работали). Герой в это время взрывается (идёт цикл взрывов) и экран улетет и идёт очистка сцены с помощью:
Код AS3:
while (workScreen[0].numChildren)
{
	workScreen[0].removeChildAt(0);
}
Ну, там все слушатели удаляются предварительно, всё вроде как должно быть удалено.

Так вот.
Почему-то gc не удалял из памяти всю эту прелесть. Как заканчивал я игру в уровне с занятой памятью в 90Мб, так новый уровень с 90Мб и начинался. А закончив этот - занятая память разрасталась до 110 (допустим) и т.д.

Решил задачу тем, что продолжил движение объектов на сцене после смерти героя. Только включив условие их уничтожения (различными способами), пока он взрывается.
В результате, когда запускался код с циклом while - объектов на сцене уже почти не оставалось и gc (почему-то только теперь!) теперь действительно удалял всё, что было нужно удалить, а не оставлял это преспокойно в памяти.

Вот, как-то так.
Мда...

Добавлено через 2 часа 3 минуты
Ссылка на мувик, оставшаяся в массиве - может помешать gc удалить этот мувик?