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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 01.05.2011, 08:37
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 1  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
По умолчанию Порядок удаления мувика с приаттаченной битмапой.

Как более корректно с т.зр. программирования и неконфиликтно для плеера при отработке:
Сперва удалить на сцене мувик с приаттаченной битмапой, а потом сделать ей dispose() или лучше наоборот?
Точный и однозначный ответ тут возможен?
(В вопросе видимость или невидимость этого мувика , то есть что там на сцене, не учитывается).
__________________
Идите первым!


Последний раз редактировалось mooncar; 01.05.2011 в 08:43.
Старый 01.05.2011, 10:38
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 2  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
А собственно для чего это служит? Чистить память так, чтобы не было утечки?

У меня вот такая конструкция:

Код AS1/AS2:
function getBitMap( mov:MovieClip, linkageId:String ){
	var myBitmapData:BitmapData = BitmapData.loadBitmap(linkageId) 
	mov.attachBitmap(myBitmapData, 10)
	mov.forceSmoothing = true
	return myBitmapData
}
 
createEmptyMovieClip( "МЕНЮ", 100 )
//и в цикле создаем картинки-клипы-элементы меню
  МЕНЮ.attachMovie - эл-т_меню 
  эл-т_меню.createEmptyMovieClip - картинка
  getBitMap(эл-т_меню, картинка_Z)
Когда меню листается ( типа список многостраничный ) я удаляю текущую страницу меню, просто напросто повторяя createEmptyMovieClip( "МЕНЮ", 100 ). Закрывая окно я для всего интерфейса делаю removeMovieClip.

Память не течет, глюков не возникает, все как часы. Собственно отчего ты уже неск. дней вылавливаешь такие тонкие нюансы?
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

Старый 01.05.2011, 11:14
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 3  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Цитата:
Сообщение от dark256 Посмотреть сообщение
Память не течет, глюков не возникает, все как часы. Собственно отчего ты уже неск. дней вылавливаешь такие тонкие нюансы?
Оттого, dark, что наборы картиночек на сотни мегабайт. В нужный момент не очистил память или попытался приаттачить битмапу к несуществующиму ролику, или еще что - крах плеера.
В принципе, сейчас всё работает сносно, в паре разделов на сцену даже выводится около 25 мБ графики с частотой 25 fps (то есть около полугига лосслесс графики в секунду - картинки 3500 на 1900) , но косячки еще есть и связаны они как раз с событийной схемой. То есть без dispose() никак. А вот работает dispose иногда странно - очистка вроде проходит (графика на сцене пропала), но по дистпетчеру Windows видно, что виртуальная и рабочая память не уменьшилась.
И только после перехода к новой сюжетной сцене занимаемый объем сразу падает.

Добавлено через 9 минут
Цитата:
Сообщение от dark256 Посмотреть сообщение
Память не течет, глюков не возникает, все как часы.
Если у тебя количество BitmapData в мегабайтах на весь ролик ограниченное, и нет явных косяков, то и не будет течь.
Утечка, например, возникает, если как у меня при смене отрисовываемого кадра не сделать dispose() предыдущей приаттаченной битмапе на данном уровне. За 5 секунд - 1,5 гига в ОЗУ и вылет.

Примерно такая функция работает на событие EnterFrame:
Код AS1/AS2:
function seqShowFrame(seq:String, frame:Number)
{
	mc.pic.removeMovieClip();
	mc.bmp.dispose();
 
	linknum = ... frame ...     
 
	var linkageId:String = seqData[seq]['prefix'] + linknum + seqData[seq]['suffix'];
	...
	if (frame <= seqData[seq][1]['last']) lib = seqData[seq][1]['lib'];
	if (frame >= seqData[seq][2]['first'] && frame <= seqData[seq][2]['last']) lib = seqData[seq][2]['lib'];
	if (frame >= seqData[seq][3]['first'] && frame <= seqData[seq][3]['last']) lib = seqData[seq][3]['lib'];	
	if (frame >= seqData[seq][4]['first'] && frame <= seqData[seq][4]['last']) lib = seqData[seq][4]['lib'];
 
	mc.bmp = lib.getBitmap(linkageId);
	..
	var pic:MovieClip = mc.createEmptyMovieClip('pic', 0);
	pic.attachBitmap(mc.bmp, 0);	
}
Поскольку на каждую сцену 4 бблиотеки (не удалось собрать в одну), поэтому и битмапа так сложно извлекается. Но я переделаю
__________________
Идите первым!


Последний раз редактировалось mooncar; 01.05.2011 в 11:33.
Старый 01.05.2011, 23:10
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 4  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
А. Ясно. Я просто не понял какие объемы данных там у тебя циркулируют
Да уж! Тут есть над чем задуматься...
По мануалам порылся, внятного не нашел ничего...
Гы. Тебе еще надо учесть скорость работы виндового свопа... Тут...
А что в итоге, если не секрет, из всего этого должно получиться-то? Не подумать ли об оптимизации всего этого потока в виде видео, простите за тавтологию
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

Старый 02.05.2011, 03:36
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 5  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Да, видно как работает своп, интересно получается. Свопится всё не сразу. Стенделоун плеер и IDE немного по-разному это делают, поэтому тестирую сразу в нем.
А с видео качество теряется, делать видео несжатое - шило на мыло.
Это всего лишь презентация, ничего интересного, зато экспы!...
__________________
Идите первым!

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

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

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


 


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


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