Я пытаюсь захватить неподвижный кадр из (любого) внешнего SWF-файла, используя свой собственный флэш-фильм в качестве прокси-сервера, чтобы загрузить его и передать информацию о рабочей области в javascript.Я хочу, чтобы он был как можно более совместимым, поэтому я остановился на AS2 / Flash 8.
Скрипт отлично работает в отладчике Flash, т.е.
trace(flash2canvasScreenshot.getPixel(w, h).toString(16));
возвращаетправильный цвет пикселя, где:
ExternalInterface.call("sendToJS",flash2canvasScreenshot.getPixel(w, h).toString(16));
в опубликованном фильме - нет.
Этот метод, очевидно, может быть довольно медленным для фильмов с большой флэш-памятью (по размерам), поскольку он повторяет каждыйодин пиксель.Если кто-то имеет в виду какие-то более совершенные методы, не стесняйтесь делиться, но, как уже было сказано, проблема, с которой я сталкиваюсь, заключается в том, что я получаю дифференцированные результаты при отладке и публикации, при этом информация о пикселях не извлекается при публикации.
import flash.display.BitmapData;
import flash.external.*;
var myLoader:MovieClipLoader = new MovieClipLoader();
var mclListener:Object = new Object();
mclListener.onLoadInit = function(target_mc:MovieClip)
{
var stageW = Stage.width;
var flash2canvasScreenshot:BitmapData = new BitmapData(stageW, Stage.height, false, 0x00000000);
var pixels:Array = new Array();
flash2canvasScreenshot.draw(element);
for (w = 0; w <= stageW; w++)
{
trace(flash2canvasScreenshot.getPixel(w, h).toString(16)); // this gives correct color value for the pixels in the debugger
ExternalInterface.call("sendToJS",flash2canvasScreenshot.getPixel(w, h).toString(16)); // this just returns the bitmap default color, 0 in this case.
/*
for (h = 0; h <= Stage.height; h++)
{
var pixel = flash2canvasScreenshot.getPixel(w, h).toString(16);
pixels.push(pixel);
}
*/
}
//ExternalInterface.call("sendToJS",pixels.toString());*/
};
myLoader.addListener(mclListener);
myLoader.loadClip("http://i.cdn.turner.com/cnn/cnnintl_adspaces/2.0/creatives/2010/6/9/21017300x250-03.swf", 0);
//myLoader.loadClip("https://s.ytimg.com/yt/swfbin/watch_as3-vflJjAza6.swf", 0);
//myLoader.loadClip(_level0.flash2canvasurl, _root.mc);