![]() |
|
||||||||||
|
|||||
|
Регистрация: May 2009
Сообщений: 134
|
Всем добрый день.
есть вспомогательная переменная есть такая функция private function deleteOb(nameOb:String = "NoName"):void { target = null; target = sprMain.getChildByName(nameOb); if (target) { trace("DELETE OB " + nameOb); sprMain.removeChild(target); target = null; } } а потом вот так удаляются: Будет ли это правильным так удалять и расскажите как Вы удаляете динмически созданные объекты? (ищу утечку памяти при загрузке внешних файлов) Спасибо!!!! |
|
|||||
|
Регистрация: May 2009
Сообщений: 134
|
Цитата:
Добавлено через 31 минуту Я тут вот что в мануле нашла: Цитата:
Какой тогда выход? Последний раз редактировалось kaetano; 19.05.2012 в 22:50. |
|
|||||
|
Цитата:
Цитата:
Иногда лучше чего-то не сделать и огрести (чтобы понять), чем полжизни копипастить "10 волшебных строчек", потому что так ваши деды и прадеды делали - а почему и зачем - никто не помнит. А теперь без философии: - на один и тот же объект может быть несколько ссылок с разных частей программы. Если вы одну занулите - это же не повод для флешплеера ломать работу всем остальным ссылающимся. Поэтому удаляет сборщик мусора, когда не ссылается никто - pPic = null ничего не удаляет - оно просто убивает ссылку, и теперь на этот объект эта часть системы объект не держит в памяти - что делают другие части - это их проблемы. - нахождение отбекта в списке отображение тоже считается ссылкой на него и мешает сборке (оно было бы странно, если бы объект исчезал с экрана без вызова removeChild, а просто так, потому что GC до него дополз) Т.е. правила просты: Есть часть системы - нужен объект - сохранеям ссылку - не нужен - убираем Нужно убрать с экрана - убираем (это уже ресурсы экономит), нужно при этом ссылку оставить, чтобы потом его добавить - оставляем. Ббольше не нужен части кода, но должен остаться на экране? - Просто занулите ссылку - кому надо удалят его с экрана. И не морочим себе голову написанием чудо-функций "удалятелей" - это не C++. Когда объект не будет никому требоваться - GC его сам удалит. А если он кому-то требуется - как его можно удалять? Есть конечно более тонкие нюансы, когда надо знать время "становления объекта ненужным", например при использовании пулов и подписке-отписке листенеров в объекте на "не принадлежащий" ему объект, но это всё потом Последний раз редактировалось expl; 20.05.2012 в 00:19. |
|
|||||
|
Регистрация: May 2009
Сообщений: 134
|
Цитата:
Цитата:
Добавлено через 17 минут В общем я попробовала - создала глобальную переменную pPic. Удаляла ее как положено (т.е. со сцены и обнуление) и все равно загрузка прцессора та же((( |
|
|||||
|
Цитата:
В AS3 переменные/поля сами не создаются (ну разве что на динамических объектах можно создать) и за пределами функции недоступны Это не "программа не знает об объекте", это "программа не знает такого поля", не то что объекта, который там должен был храниться. Последний раз редактировалось expl; 20.05.2012 в 01:01. |
|
|||||
|
Регистрация: May 2009
Сообщений: 134
|
Цитата:
И самое главное - даже при удалении со сцены и обнулении загрузка не уменьшилась. Задача то в этом. |
|
|||||
|
Регистрация: May 2012
Сообщений: 18
|
Цитата:
<найти этот объект в массиве> removeChild(array[i]); array[i]=null; <удалить объект из массива> |
|
|||||
|
Цитата:
private var _someField:SomeType;//Поле (field) private var _x:int;// Поле (field) private function get x():Number {return _x;}// \_ Свойство (Property) private function set x(value:Number):Number { _x = value; }// / private function getX():Number { return _x; } // Метод (Method) private function doSomething():void // Метод (Method) { var x:int = 10;// Переменная(Variable) } И самое главное - даже при удалении со сцены и обнулении загрузка не уменьшилась. Задача то в этом. Тогда давайте по-порядку: - она вообще увеличивается при добавлении этого "спрайта"? - он сам подписывается н внешние события, таймеры или ENTER_FRAME? - что вообще есть в этом спрайте? (кстати, GC может снести объект с работающим ENTER_FRAME, если на объект нет ссылок и он снесён со сцены, но ENTER_FRAME будет тикать всё время ожидания GC) Последний раз редактировалось expl; 20.05.2012 в 15:29. |
|
|||||
|
Регистрация: May 2009
Сообщений: 134
|
Цитата:
да, сам спрайт подписывается, но это все вроде удаляется, уже проверяла. вот тут подробнее про класс, если Вас не затруднит - посмотрите : http://www.flasher.ru/forum/showthread.php?t=179463 |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:59. |
|
|
« Предыдущая тема | Следующая тема » |
|
|