Цитата:
Сообщение от 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 бблиотеки (не удалось собрать в одну), поэтому и битмапа так сложно извлекается. Но я переделаю
