AS3.0での自作したクラスのコピーについて
javaと同じで、AS3.0も自作したクラスを=で代入すると参照がコピーされるようです。
class MyClass
{
以下略
}
MyClass a,b;
a = new MyClass();
b = a;
ってかいたらaとbは同じデータを指しているということ。
このため、bを変えるとaが変わっちゃいます。
参照ではなく、aと同じ値をもったbを新規作成したい場合には、
ディープコピーするための処理を自分で作らなければいけないようです。
一つの方法は、
http://d.hatena.ne.jp/octech/20080419
こういうやり方だそうですが、自分の場合はうまく動作しなかったので、
intとかStringとかプリミティブ型(値渡し)になる所まで下っていって
コピーする関数を作りました。
クラスが複数階層にまたがっていたので、書くクラス全てに順番に値をコピーする
cloneメソッドを追加しました。
c,とかc++とかをメインで使っている人間としては、この辺の感覚はまだ馴染めてないですねー。
ポインタ使わせろ!って気持ちになってしまいますw