|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Модрон-ветеринар
|
Порядок удаления мувика с приаттаченной битмапой.
Как более корректно с т.зр. программирования и неконфиликтно для плеера при отработке:
Сперва удалить на сцене мувик с приаттаченной битмапой, а потом сделать ей dispose() или лучше наоборот? Точный и однозначный ответ тут возможен? (В вопросе видимость или невидимость этого мувика , то есть что там на сцене, не учитывается).
__________________
Идите первым! Последний раз редактировалось mooncar; 01.05.2011 в 08:43. |
|
|||||
А собственно для чего это служит? Чистить память так, чтобы не было утечки?
У меня вот такая конструкция: 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) Память не течет, глюков не возникает, все как часы. Собственно отчего ты уже неск. дней вылавливаешь такие тонкие нюансы? |
|
|||||
Модрон-ветеринар
|
Цитата:
В принципе, сейчас всё работает сносно, в паре разделов на сцену даже выводится около 25 мБ графики с частотой 25 fps (то есть около полугига лосслесс графики в секунду - картинки 3500 на 1900) , но косячки еще есть и связаны они как раз с событийной схемой. То есть без dispose() никак. А вот работает dispose иногда странно - очистка вроде проходит (графика на сцене пропала), но по дистпетчеру Windows видно, что виртуальная и рабочая память не уменьшилась. И только после перехода к новой сюжетной сцене занимаемый объем сразу падает. Добавлено через 9 минут Если у тебя количество BitmapData в мегабайтах на весь ролик ограниченное, и нет явных косяков, то и не будет течь. Утечка, например, возникает, если как у меня при смене отрисовываемого кадра не сделать dispose() предыдущей приаттаченной битмапе на данном уровне. За 5 секунд - 1,5 гига в ОЗУ и вылет. Примерно такая функция работает на событие EnterFrame: 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); }
__________________
Идите первым! Последний раз редактировалось mooncar; 01.05.2011 в 11:33. |
|
|||||
А. Ясно. Я просто не понял какие объемы данных там у тебя циркулируют
Да уж! Тут есть над чем задуматься... По мануалам порылся, внятного не нашел ничего... Гы. Тебе еще надо учесть скорость работы виндового свопа... Тут... А что в итоге, если не секрет, из всего этого должно получиться-то? Не подумать ли об оптимизации всего этого потока в виде видео, простите за тавтологию |
|
|||||
Модрон-ветеринар
|
Да, видно как работает своп, интересно получается. Свопится всё не сразу. Стенделоун плеер и IDE немного по-разному это делают, поэтому тестирую сразу в нем.
А с видео качество теряется, делать видео несжатое - шило на мыло. Это всего лишь презентация, ничего интересного, зато экспы!...
__________________
Идите первым! |
Часовой пояс GMT +4, время: 10:18. |
|
« Предыдущая тема | Следующая тема » |
|
|