我有两个像这样的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?
答案 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的快照