質問

簡単にする必要があります。私は、オブジェクトを持っています。私はそれを変更したいのですが、私は前に私は、私は戻って行くことができ、それのコピーを保存します。私は元=コピーを設定してみましたが、私は、元の属性を変更するときコピーにも変化を示しています。私は、ActionScriptであなたが割り当てた任意の時間が、それは本当にただ、元のオブジェクトへの参照を格納するため、これがあると仮定しています。だから、いただきました!私は後で使用するために、元のオブジェクトのコピーを格納するための最良の方法は?

役に立ちましたか?

解決

var newObj:Object = Object(ObjectUtil.copy(oldObj));

「コピー指定されたオブジェクトやコピーへの参照を返します。コピーはネイティブシリアル化技術を用いて行われる。これは、カスタム直列にコピー中に尊重されることを意味します。

この方法は、コレクションの要素としてデータオブジェクトを、コピーするために設計されています。このようなTextInputコントロールとして、UIComponentオブジェクトをコピーするためのものではありません。あなたが特定のUIComponentオブジェクトのコピーを作成する場合は、コンポーネントのサブクラスを作成し、コピーを実行するには、clone()メソッド、または他の方法を実装することができます。 "

のhttp://livedocs.adobe .COM /フレックス/ 3 / langref / MX / utilsの/ ObjectUtil.html#コピー()

他のヒント

あなたが探していることは参照渡しではなく、オブジェクトのディープコピーです。私はAS3に新しいByteArrayクラスを使用するここで答えを見つけます:

http://www.kirupa.com/forum/showthread.php ?P = 1897368

function clone(source:Object):* {
 var copier:ByteArray = new ByteArray();
 copier.writeObject(source);
 copier.position = 0;
 return(copier.readObject());

}

あなたはどちらその後、このように使用します:

newObjectCopy = clone(originalObject);

乾杯!

 // duplicate any given Object (not MCs)  
 Object.prototype.copy = function()  
 {  
     ASSetPropFlags(Object.prototype,["copy"],1);  

     var _t = new this.__proto__.constructor(this) //

     for(var i in this){  
         _t[i] = this[i].copy()  
     }  
     return _t  
 };  

使用方法

x = ["1","2","3",[4,5],[{a:1,b:2}]]

y = x.copy()

y[0] = 0

y[3][0]="d"

trace(x)

trace(y)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top