0

对不起,我确信在 Internet 上有很多我的问题的答案,但我不知道足够多的编程来具体搜索。

好的,这是我的问题。让我们看一下这个例子,它非常简单:

var obj:Object = new Object;
var bit:Bitmap = new Bitmap;
    obj["key"] = bit;
    obj["key"].x = 30;
    trace(obj["key"].x); //30.

var bit2:Bitmap;
    bit2 = obj["key"];
    trace (bit2.x); //30.
    bit2.x = 60;
    trace(bit2.x) //60.
    trace(obj["key"].x); //60 ???

我要做的就是在一个对象中存储一个位图。这部分很好

trace(obj["key"]); // [Object Bitmap]

但是,如果我试图把它交给另一个对象,它发生的方式对我来说没有意义。就像我的对象在内存中为位图提供了引用,而不是位图本身。所以看起来我有两个对我的位图的引用。我所有的应用程序都基于这些对象,我真的需要一种方法来获取我的位图副本,而不仅仅是对它的引用。所以我想更改这些属性而不必在我的对象中更改它们。

4

1 回答 1

2

试试这个:

private function bmpCopy(srcBmp:Bitmap):Bitmap{
  return new Bitmap(srcBmp.bitmapData.clone());
}

//in your code somewhere...
bit2 = bmpCopy(bit1);

您只需要记住在使用完这两个位图后释放它们。

于 2013-03-08T22:21:20.423 回答