|
|
|||||
Регистрация: Mar 2008
Сообщений: 259
|
Удаление мувика самим собой
Возник вопрос в корректности удаления мувиклипа самим собой со сцены.
На фрейме "REMOVE" выполняется какая-то анимация, далее на Х-ном кадре выполняется следующий код: С точки зрения AS вроде бы все правильно. Однако наткнулся на странную проблему: после каждого такого удаления мувик судя по всему продолжает проигрывать какую-то анимацию... То есть , предположим имеется 20 мувиков на сцене. Они нормально работают, далее они все ремувятся и добавляется 20 новых мувиков. Они начинают тормозить. Если сделать так еще раз, то тормоза будут еще больше. Проблема точно не в выгруженных объектах и т.п., по 2 причинам: 1) Если не делать REMOVE, то все ок 2) Нагрузка в виде сожранной памяти при торможении выглядит в виде ломаной, то есть 300 кб, 600 кб, 300 кб, 600 кб... Если еще раз перегрузить мувики, то будет 300 кб - 900 кб - 300 кб - 600 кб - 900 кб - 300 кб и т.п. То есть судя по всему, почему-то мувики, удалившись со сцены (а кстати при этом я тру всевозможные ссылки на них, но, как я уже сказал, что, получается, что если не тереть и не ремувить, то торможение пропадает), начинают что-то такое вытворять, что сжирают память. |
|
|||||
Регистрация: Nov 2006
Сообщений: 176
|
|
|
|||||
Регистрация: Mar 2008
Сообщений: 259
|
delete this?!
Ну он проигнорирует эту строчку и продолжит работать |
|
|||||
Регистрация: Jul 2007
Сообщений: 306
|
И ещё если мувики не были аттачены, а сразу были на сцене, то их нельзя програмно удалить.
Последний раз редактировалось telit; 30.05.2008 в 19:49. |
|
|||||
Modus ponens
|
это не правильно логически. объекты не должны сами себя удалять (как следствие - не умеют это делать). removeChild() не удаляет клип, он его убирает со сцены, но клип продолжает существовать. Чтобы именно удалить клип нужно родителю и всем объектам ссылающимся на клип сообщить о том, что его нужно удалить. т.е. предположим, что единственный, кто знает про клип - это его родитель, тогда:
у родителя может быть метод, в котором будет что-то вроде этого: public function totallyRemoveChild(mc:DisplayObject):void { var toBeDeleted:DisplayObject = removeChild(mc); delete toBeDeleted; } Цитата:
__________________
Hell is the possibility of sanity |
Часовой пояс GMT +4, время: 05:43. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|