HTML-компонент Air и событие HTML_RENDER - PullRequest
2 голосов
/ 26 января 2011

В настоящее время мы используем компонент mx: HTML для рендеринга сложных HTML-страниц (что было довольно неприятно .. :)). По некоторым причинам нам нужно, когда рендерит HTML, чтобы захватить изображение отображаемой страницы. Поэтому я использую следующий код для этого:

при инициализации:

frameHtml.addEventListener(Event.HTML_RENDER, cacheFrameHTML);

и функция cacheFrameHTML:

private function cacheFrameHTML(event:*):void {
...
cacheImage.source = new Bitmap( ImageSnapshot.captureBitmapData(frameHtml));
...
}

По какой-то неизвестной причине результирующее изображение иногда полностью пустое. Похоже, что между событием HTML_RENDER и эффективным рендерингом компонента HTML существует небольшая задержка. Я пытался отложить захват изображения с помощью таймера, который, кажется, работает, но это не совсем чисто.

Итак, мой вопрос: - есть ли кто-нибудь, кто знает хитрость, которая запускает захват только тогда, когда фрейм HTML отображается эффективно? - по крайней мере, есть ли способ проверить, является ли результат BitmapData пустым или имеет только белые пиксели?: b

Большое спасибо

Antoine

1 Ответ

1 голос
/ 26 января 2011

Вы пытались использовать метод callLater?

Метод callLater () ставит в очередь операцию, выполняемую для следующего обновления экрана, а не в текущем обновлении

private function cacheFrameHTML(event:*):void {
...
callLater(saveImage);
...
}

private function saveImage():void
{
cacheImage.source = new Bitmap( ImageSnapshot.captureBitmapData(frameHtml));
}
...