Flex:将加载图像的bitmapData复制到另一个SWFLoader中

时间:2010-02-16 03:36:00

标签: flex actionscript-3 actionscript bitmap bitmapdata

我有两个像这样的SWFLoader:

<mx:SWFLoader width="10" height="10" complete="imageLoaded()" id="ldr_src" source="img.jpg" scaleContent="true"/>
<mx:SWFLoader id="ldr_target" scaleContent="true"/>

private function imageLoaded():void{
     var bm:Bitmap = new Bitmap(ImageSnapshot.captureBitmapData(ldr_src);
     ldr_target.source = bm;
}

这里的一切都按预期工作,除了一件小事:

我在ldr_src中加载​​了大小为100x100的图像(10x10)。位图在ldr_target中复制,但结果意外。我原以为加载的图像会被复制10x10大小。而是将加载图像的(0,0)到(10,10)的位图复制到目标。

无论图像的实际大小是多少,如何复制由swfLoader缩小的大小的bitmapData?

3 个答案:

答案 0 :(得分:2)

image.content传递给ImageSnapshot.captureBitmapData,然后确保ldr_target的宽度/高度设置为等于src:

<mx:SWFLoader width="10" height="10" complete="imageLoaded()" id="ldr_src" source="img.jpg" scaleContent="true"/>
<mx:SWFLoader width="10" height="10" id="ldr_target" scaleContent="true"/>

private function imageLoaded():void
{
    var bm:Bitmap = new Bitmap(ImageSnapshot.captureBitmapData(ldr_src.content));
    ldr_target.source = bm;
}         

兰斯

答案 1 :(得分:0)

我试图做类似的事情,但使用视频源而不是图像。工作就像一个魅力,谢谢。 (出于某种原因,“ImageSnapshot”类在Adobe上是一个非常保密的秘密。)

答案 2 :(得分:0)

您还可以使用BitmapData.draw方法获取实现IBitmapDrawable的DisplayObject的快照