ActionScriptで a = b とした場合はシャローコピーとなり、bがaを参照する形になる。
参照ではなく完全にコピー(ディープコピー)したい場合は、
import flash.utils.ByteArray; function clone(source:Object):* { var myBA:ByteArray = new ByteArray(); myBA.writeObject(source); myBA.position = 0; return(myBA.readObject()); }
のような形で行う必要がある。
参考 : ActionScript3における deep copy - 川o・-・)<2nd life
public var grp: Graph; private function xxx(): void { nwGraph.dataProvider = x; this.grp = x.dataProvider as Graph; }
とかしていたらnwGraph.dataProviderのノード削除時にgrpのノードも削除されてしまう(そりゃそうだ)。仕方ないので上記方法でディープコピーしようとしたけどうまくいかない。
あれこれ悩んだけど、結局
public var grp: Graph; private function xxx(): void { nwGraph.dataProvider = x; var r: Roamer = new Roamer(); r.dataProvider = x; this.grp = r.dataProvider as Graph; }
でうまくいった。なんてこったい。