Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 31.08.2010, 21:51
nldr вне форума Посмотреть профиль Отправить личное сообщение для nldr Найти все сообщения от nldr
  № 11  
Ответить с цитированием
nldr
 
Аватар для nldr

Регистрация: Jul 2009
Сообщений: 48
Тогда еще один вопросик.
Вот код:
Код AS3:
//Удаляем уровень игры (в который напихали всякой фигни) из списка отображения
removeChild(level); 
//Приравниваем переменную к null
level = null;
 
//Создаем новый уровень				
level = new CLevel(++n);
//Добавляем в список отображения
addChildAt(level, 0);
Кроме уровня (level) больше ничего нет, прелодеры и прочее на время теста убрал. Все что добавляется, добавляется непосредственно в level. Листенеров и таймеров, внешних нет.

Флешка изначально отжирает 17мегов памяти
Так вот, если сделать это (пересоздать уровень) несколько раз, то флешка отжирает до 100мегов, затем потребление памяти падает. Причем каждый раз падает по разному, но еще ни разу не упало обратно до 17 мегов. Это нормально? (Тестирую в Stand-alone debug плеере).

Старый 31.08.2010, 21:53
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 12  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
Смотреть нужно в профайлере, а не через диспетчер задач или всякие там Sysem.totalMemory.

Если не знаете что такое профайлер - ищите в гугле. Заодно поищите про Garbage Collector.

Старый 01.09.2010, 04:56
artcraft вне форума Посмотреть профиль Отправить личное сообщение для artcraft Посетить домашнюю страницу artcraft Найти все сообщения от artcraft
  № 13  
Ответить с цитированием
artcraft
 
Аватар для artcraft

блогер
Регистрация: Aug 2005
Адрес: www.artcraft.cz
Сообщений: 1,967
Записей в блоге: 6
Отправить сообщение для artcraft с помощью ICQ
Цитата:
Сообщение от nldr Посмотреть сообщение
Т Листенеров и таймеров, внешних нет.
внутренние таймеры надо убить тоже
__________________
Хороший отдых - половина работы.

Старый 01.09.2010, 18:50
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 14  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
Таймера будут выполнятся, ну и что с ними? =)

Например в примере у silin`а при запуске GC (наверняка все видели) работала подпика на ENTER_FRAME. И ведь убивалась =) С таймерами наверняка та же фигня.

Тут речь уже скорее об эмуляции что всё отошло в мир иной, а вопрос был о достаточности отхода.

Старый 01.09.2010, 19:15
artcraft вне форума Посмотреть профиль Отправить личное сообщение для artcraft Посетить домашнюю страницу artcraft Найти все сообщения от artcraft
  № 15  
Ответить с цитированием
artcraft
 
Аватар для artcraft

блогер
Регистрация: Aug 2005
Адрес: www.artcraft.cz
Сообщений: 1,967
Записей в блоге: 6
Отправить сообщение для artcraft с помощью ICQ
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
Таймера будут выполнятся, ну и что с ними? =)
таймер продолжает действовать даже в удалённом объекте http://www.bit-101.com/blog/?p=1169
зачем тратить ресурсы на вычисления внутри объекта который должен быть удалён?
__________________
Хороший отдых - половина работы.


Последний раз редактировалось artcraft; 01.09.2010 в 19:17.
Старый 01.09.2010, 19:24
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 16  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
Цитата:
таймер продолжает действовать даже в удалённом объекте http://www.bit-101.com/blog/?p=1169
Ого, спасибо, буду знать.
Цитата:
зачем тратить ресурсы на вычисления внутри объекта который должен быть удалён?
Я ведь не говорил, что это неправильно. Я говорил что это необязательно, ну и выходит что ошибался - хотя статью надо будет на досуге проверить =)

Старый 12.11.2010, 08:53
mechman вне форума Посмотреть профиль Отправить личное сообщение для mechman Найти все сообщения от mechman
  № 17  
Ответить с цитированием
mechman

Регистрация: Jul 2004
Сообщений: 52
А как удалить объект, если на него имеется только ссылка?
Код AS3:
 for (var i:int = numberOfChilds-1; i >= 0; i--) { 
        curObject = (getChildAt(0) as Sprite).getChildAt(i);
        // здесь делаем с этим объектом все, что нужно
        // а здесь удаляем его полностью. но как?
}
curObject = null; разве сработает?

Старый 12.11.2010, 09:23
MrPoma вне форума Посмотреть профиль Отправить личное сообщение для MrPoma Посетить домашнюю страницу MrPoma Найти все сообщения от MrPoma
  № 18  
Ответить с цитированием
MrPoma
 
Аватар для MrPoma

Регистрация: Jul 2006
Адрес: Питер
Сообщений: 2,083
Отправить сообщение для MrPoma с помощью Skype™
Цитата:
Сообщение от mechman Посмотреть сообщение
А как удалить объект, если на него имеется только ссылка?
Код AS3:
 for (var i:int = numberOfChilds-1; i >= 0; i--) { 
        curObject = (getChildAt(0) as Sprite).getChildAt(i);
        // здесь делаем с этим объектом все, что нужно
        // а здесь удаляем его полностью. но как?
}
curObject = null; разве сработает?
Если curObject - переменная экемпляра, присвойте ей null, если локальная переменная, ничего не делайте. Еще нужно удалить его из списка отображения. Вам же написали.
__________________
жж | твттр | гглплс | фсбк | вкнткт | гтхб

Старый 12.11.2010, 10:32
mechman вне форума Посмотреть профиль Отправить личное сообщение для mechman Найти все сообщения от mechman
  № 19  
Ответить с цитированием
mechman

Регистрация: Jul 2004
Сообщений: 52
Цитата:
Еще нужно удалить его из списка отображения. Вам же написали.
Это понятно.
А вот по удалению самого объекта...

Уточню.
Есть мувиклип А. В нем Б. А уже в нём 20 мувиклипов.
В мувиклипе А:
Код AS3:
private var curObject:Object;
// цикл, в котором переменной curObject присваивается ссылка на очередной клип.
for (var i:int = 1; i < 20; i++) { 
   curObject = мувикБ.getChildAt(i);
   trace(curObject.x); // набор действий над клипом
   curObject = null; // удаление, которое не работает,
   //так как скорее всего null присваивается переменной curObject,
   //а не объекту, на который ссылка
}

Старый 12.11.2010, 11:29
AlexDesinger вне форума Посмотреть профиль Отправить личное сообщение для AlexDesinger Посетить домашнюю страницу AlexDesinger Найти все сообщения от AlexDesinger
  № 20  
Ответить с цитированием
AlexDesinger

Регистрация: Feb 2007
Сообщений: 563
Если требуется удалить очень сложный объект, в котором много чего напихано, лучше отдельно прописать метод 'destroy' или что то в этом духе, куда вам придется вручную прописать удаление всех листенеров, таймеров, интервалов, ссылок и пр. все, из-за чего мусорщик может считать объект активным. Достаточно хлопотно, но еще лучше строить объект level таким образом, чтобы не приходилось его удалять, а можно было бы модифицировать при изменившихся обстоятельствах, а удалять в нем простые объекты, если нужно.

Создать новую тему Ответ Часовой пояс GMT +4, время: 14:06.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 14:06.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.