提供另一个对象的对象,而不仅仅是对它的引用

时间:2013-03-08 22:14:41

标签: actionscript-3 object reference

对不起,我确信在互联网上我的问题有很多答案,但我不知道在我的搜索中有什么特定的编程。

好的,这是我的问题。让我们来看看这个例子,这很简单:

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]

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

1 个答案:

答案 0 :(得分:2)

试试这个:

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

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

你完全记得在使用它们时释放两个位图。