在Flex 4.6中克隆图像

时间:2012-03-12 16:04:00

标签: image flex clone displayobject

在过去的几个小时里,我一直在尝试在Flex中克隆图像(使用Spark组件,但也尝试在Bitmap和BitmapImage之间进行转换)。

我正在尝试的是创建一个简单的绘画应用程序,它跟踪每个画笔描边。一旦“画布上的图像”发生变化,就会克隆它,然后将克隆放入应用程序底部的“历史记录”面板中。

我尝试过的事情包括:

  • 使用ObjectUtils.clone(Object)
  • 从Image.content创建BitmapData,然后将其设为Bitmap并简单地显示它(图片没有内容字段,它说)
  • 执行字节复制 当然,我可以在互联网上找到其他人。

基本上,如何在Flex 4.6中克隆Image(Spark Image)?

非常感谢!

- Danny Nophut

2 个答案:

答案 0 :(得分:10)

您可以获取图形图像并将图像的位图设置为历史图像的源,而不是克隆,可以执行以下操作

private function getBitmapData( target:DisplayObject ) : BitmapData
{

   //target.width and target.height can also be replaced with a fixed number.
   var bd : BitmapData = new BitmapData( target.width, target.height );
   bd.draw( target );
   return bd;
}

在某些情况下,如果目标的宽度和高度不起作用,您可以使用getbounds方法获取对象的边界,并从边界获取宽度和高度。

答案 1 :(得分:1)

在bitmapdata上有克隆功能:

public class EZB2ParkObject extends Image implements IEZB2ParkObject
{

    public function clone():IEZB2ParkObject{
        var n:IEZB2ParkObject   = new EZB2ParkObject();
        n.id = this.id;
        n.source = new Bitmap(BitmapData(this.source.bitmapData).clone());
        n.dimensions = this.dimensions;
        n.assetId = this.assetId;
        return n;
    }
}