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()メソッドを多重配列対応に修正する
通常の代入
A.test = "テスト1";
// オブジェクトAをオブジェクトBに代入
var B = A;
// Bを変更
B.test = "テスト2";
// Aも変更されてしまう
trace(A.test); // テスト2
trace(B.test); // テスト2
mx.utils.ObjectCopyクラス で代入
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
コメント
コメントなし