Снимок экрана (сорта) во Flash - PullRequest
0 голосов
/ 03 апреля 2011

Я ищу способ создания и отображения до 200 снимков экрана.В настоящее время я записываю каждый снимок экрана в объекте BitmapData, а затем просматриваю их все.Этот подход работает, но он занимает слишком много памяти - в некоторых браузерах происходит сбой.

Каков наилучший подход для решения этой проблемы?Могу ли я создать .png, .flv фильм или как-то сжать BitmapData?

Спасибо!

1 Ответ

2 голосов
/ 05 апреля 2011

Существует более одного решения, но вы можете попробовать одно из них (и объединить):

  • сделать снимок экрана с меньшим разрешением (масштабирование, см. Ниже)

  • преобразовать ваши BitmapData в ByteArray (через BitmapData.getPixels ()) и вызвать ByteArray.compress () (сжатие без потерь)

  • сжимать изображение в JPEGByteArray и определение соотношения качества в зависимости от количества захваченных снимков, его разрешения и доступного места в памяти (я не уверен, что вы можете знать, последний) - думаю, это один из лучших способов

  • Сделать полный размер для первого и для остальных, захватывать только изменения и положение (см., Как работает функция отладчика FlashPlayer «Показать область перерисовки»)

  • если вы работаете с приложением Air, сохраните BitmapData во временных файлах

  • , если это возможно, попросите пользователя разблокировать большой объем пространства для LocalSharedObject и записать свои данные внутри

Здесь пример кода для захвата с масштабным соотношением (например: 100x200 DispObj -> 50x100 BitmapData)

var displayObject:DisplayObject;
var scale:Number = 0.5;
var bounds:Rectangle = displayObject.getBounds(displayObject);
var bitmapData:BitmapData = new BitmapData(uint((bounds.width + 0.5) * scale), uint((bounds.height + 0.5) * scale), true, 0);
bitmapData.draw(displayObject, new Matrix(scale, 0, 0, scale, -bounds.x * scale, -bounds.y * scale));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...