从mx:Image复制BitmapData

时间:2010-09-03 11:07:53

标签: flex image copy bitmap

如何从mx:image组件复制或复制bitmapdata?

我需要在我的应用程序的多个屏幕中显示相同的图像,并且不想多次下载图像。

我可以使用urlrequest将图像作为位图下载并复制,但我喜欢你可以设置图像组件的来源。

2 个答案:

答案 0 :(得分:5)

Image扩展SWFLoader,其中content property将包含已加载的Bitmap对象。等待图像加载,将内容转换为Bitmap并读取其bitmapData

public function imageLoadCompleteHandler(e:Event):void
{
    var bitmap:Bitmap = img.content as Bitmap;
    if(bitmap == null) {
        trace("loaded content is not an image");
        return;
    }
    bmpData = bitmap.bitmapData;
    //hurray..!
}

答案 1 :(得分:0)

实际上在看完上面的信息后(尝试了一下)我认为这是错误的。完整的监听器在我的第二个图像上触发,所以我猜它正在加载它两次。哦,好吧。

我无法放置整个Flex文档,但这似乎有效。我将它添加到Application标签:applicationComplete =“Run();”

以下内容包含在mx:Script标记中:

    import mx.controls.Image;
    private function Run():void
    {
        var i:Image = new Image();
        i.source = first.source;
        addChild(i);

    }

这只是脚本标记之外的图像:

<mx:Image x="12" y="125" source="e53c04a51d5992fb77ab1e20c45ddc9f.jpeg" id="first" />

我在设置了i源后也尝试了这个:

first.source = null; 

只是看看会发生什么,i图像保留了它的来源