0

申し訳ありませんが、私の質問に対する回答はインターネット上にたくさんあると思いますが、私の検索で特定するのに十分なプログラミングを知りません。

これが私の質問です。この例を見てみましょう。これは非常に単純です。

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]

しかし、これを別のオブジェクトに与えようとすると、それが発生する方法は私には意味がありません。私のオブジェクトがビットマップ自体ではなく、ビットマップのメモリ内の参照を提供するようです。したがって、ビットマップへの参照が 2 つあるようです。私のアプリケーションはすべてこれらのオブジェクトに基づいており、ビットマップへの参照だけでなく、ビットマップのコピーを取得する方法が本当に必要です。したがって、オブジェクトで変更する必要なく、これらのプロパティを変更したいと考えています。

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 に答える