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