yoshiweb.NET

mx.utils.ObjectCopyクラス でオブジェクトを複製

配列やオブジェクトをコピーしたいとき普通の変数のように A = B と代入すると参照が代入されるため、片方の値を変更すると両方変わってしまいますが、mx.utils.ObjectCopyクラス を使うとオブジェクトを複製できるようです。

通常の代入var A = new Object();
A.test = "テスト1";

// オブジェクトAをオブジェクトBに代入
var B = A;

// Bを変更
B.test = "テスト2";

// Aも変更されてしまう
trace(A.test); // テスト2
trace(B.test); // テスト2


mx.utils.ObjectCopyクラス で代入var A = new Object();
A.test = "テスト1";

// オブジェクトAをオブジェクトBに代入
var B = mx.utils.ObjectCopy.copy(A);

// Bを変更
B.test = "テスト2";

// Aはそのまま
trace(A.test); // テスト1
trace(B.test); // テスト2

FLASH-JP.COM - 「値による代入」と「参照による代入」について
darron schall :: Know thy Class Library*
インスタンスレベルで定義された function はコピーされないようです。

<追記>
Fumiononaka.com - Macromedia Flash非公式テクニカルノート
FN0603002 - ObjectCopy.copy()メソッド
FN0604001 - ObjectCopy.copy()メソッドを多重配列対応に修正する
投稿日 : 2005年11月08日 - yoshiweb - カテゴリ: ActionScript

コメント

コメントなし