Среда, 18 Декабря 2024, 10:25

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Вопрос по системе удаления обьектов.
ggmanДата: Пятница, 23 Сентября 2011, 03:30 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
На одном из форумов прочитал что если удалять обьектпри помоши removeChildAt(), то это не уничтожает объект отображения, и не удалит его из памяти флеш. До тех пор, пока у вас имеется ссылка на него, он будет существовать за пределами таблицы отображения, даже если он не является потомком любой другой временной шкалы или контейнера.
В связи с этим вопросы:
1) Если все ссылки и слушатели касающиеся обьекта прописаны в самом movieClip они удаляться вместе с ним и в результате удаление будет полным?
2) Какой есть другой способ удалить обьект полностю?
reload2Дата: Пятница, 23 Сентября 2011, 09:26 | Сообщение # 2
частый гость
Сейчас нет на сайте
Тебе не сюда.

Тут всё о Flash тебе нужно к Программистам.


Если я тебе помог поставь пожалуста мне +1 к репутации)
FenrireДата: Пятница, 23 Сентября 2011, 09:40 | Сообщение # 3
почетный гость
Сейчас нет на сайте
1 - старайся не создавать лишние события в клипе.
А если уже создаешь, то перед удалением клипа удаляй в нем все события.
ТвойКлип.remooveEventListener(.......) примерно так
а потом уже удаяй сам клип
iLORdДата: Пятница, 23 Сентября 2011, 11:18 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
reload2, а ничего, что вопрос касается именно программирования на Flash? И знатоки других языков вряд ли помогут со сборщиком мусора именно Флеша?

ggman, в большинстве случаев это не критично. Необходимость полностью удалять объекты бывает только в сложных физических играх, где производительность просаживается. Если она просаживается в простой игре - то проблема не только в сборщике мусора. Кроме того, что уже посоветовал Fenrire, могу подсказать ещё два способа:
1. Если удаляемые и вновь создаваемые объекты одинаковы, то проще не удалять и создавать, а временно прятать первые.
2. Можно использовать стороннюю библиотеку (например, СasaLib). Там есть свои классы для Sprite и MovieClip, в которых есть методы типа removeChildrenAndDestroy(), удаляющие сами объекты, их детей и все их слушатели событий.


Bread Games - пилим ураганный экшен!
andarkyДата: Пятница, 23 Сентября 2011, 11:22 | Сообщение # 5
старожил
Сейчас нет на сайте
ggman,
на каком AS пишешь?



Моя страничка по дизайну
GameDev//Design//3D
Ютубчик
ggmanДата: Пятница, 23 Сентября 2011, 18:21 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
Всем спасибо за ответы.
reload2
Не мешай.

Fenrire
Спасибо.

iLORd
По поводу создания всего заранее. Не знаю. Я просто делаю мясной шутер и мне кажеться не правельным создавать заранее 50 врагов, а потом просто их переещать за предел видимости.

andarky
3.0 Всегда 3.0
GECKДата: Пятница, 23 Сентября 2011, 19:03 | Сообщение # 7
заслуженный участник
Сейчас нет на сайте
Quote (ggman)
мне кажеться не правельным создавать заранее 50 врагов, а потом просто их переещать за предел видимости.

Этот прием называется кэширование, и имеет довольно весомые преимущества.
Выделение/освобождение памяти - процедура довольно тяжелая. Создавать в пылу боя новых врагов с нуля гораздо дольше, чем изменить несколько параметров у уже убитых и хранящихся за сценой.
Ну и ссылка в тему.


Всё гениальное просто. И хреново работает.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг