我想從一個(任何)外部swf文件捕獲一個靜幀,通過使用我自己的Flash電影作爲代理來加載它並將有關舞臺的信息放到JavaScript上。我想盡可能保持它的兼容性,所以我現在就使用AS2/Flash 8。從外部swf導出框架到Javascript
該腳本正常工作在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);
你試過像'ExternalInterface.call(「sendToJS」,「42」);',以確保您的JS正在顯示數據正確嗎? – kolufild
@kolufild是的,嘗試了類似的東西,它正在接收數據。 – Niklas
如果這是所有的代碼,那麼'h'是'undefined'。 – Joe