オブジェクトの作成者が特別な機能(特定のシリアライゼーション機能はありません)を実装することなく(しかし、アノテーションを使用することはできません)、Flashに(オブジェクト内のオブジェクト内のオブジェクトなど、etcなど)オブジェクト?ActionScriptオブジェクトの深い包括的なシリアル化
これが意味をなさない場合は、そのようにコメントしてみてください。
オブジェクトの作成者が特別な機能(特定のシリアライゼーション機能はありません)を実装することなく(しかし、アノテーションを使用することはできません)、Flashに(オブジェクト内のオブジェクト内のオブジェクトなど、etcなど)オブジェクト?ActionScriptオブジェクトの深い包括的なシリアル化
これが意味をなさない場合は、そのようにコメントしてみてください。
AMFは、複雑なオブジェクトのシリアル化に使用できます。ここではいくつかの良い情報があります:。
http://tournasdimitrios1.wordpress.com/2010/07/23/the-abcs-of-amf-format/
オブジェクトのクローンを作成する一般的な方法があります - しかしない深いコピーはしかし:
public function clone():MyObject
{
var byteArr:ByteArray = new ByteArray();
byteArr.writeObject(this);
byteArr.position = 0;
return(byteArr.readObject());
}
どこでは、しばしば、特定のレベルがあるだろうと。とにかく本当の深いコピーは時々本当に便利ではありません停止したい。ですから一般的には、クローンメソッドを定義するICloneableインターフェイスを作成することをお勧めします。このオブジェクトを、クローンを作成するすべてのオブジェクトに対して実装し、このインタフェースを実装するすべてのインスタンスに対して再帰的に呼び出す
.writeObject()/ readObject()メソッドのアプローチはかなり柔軟にすることができます。組み込み型以外にも、flash.net.registerClassAlias()でこれらのクラスを最初に登録することでカスタムクラスを複製できます。あなたは、Flashにそのことをさせるか、クラスにflash.utils.IExternalizableを実装させることができます。このメソッドは、public function writeExternal(output:IDataOutput):voidとpublic function readExternal(input:IDataInput):voidの2つのメソッドを定義します。そのクラスのインスタンスがどのようにシリアライズされるかを正確にカスタマイズできます。 – Metal
これは私が通常これについて行う方法ですが、見ることができる必要がある多くのカスタムコンポーネントがあります。残念ながら、独自のクローンメソッドを実装するという制約はありません。 (これは唯一の理由ですが、この問題は難しいですが、私はメモ柄のデザインパターンやそれ以外のものを使うことはできません。それは完全に汎用的です:()... – SubSevn
これは* displayObjectsを除く*それとも、各displayObjectを独自のクローニングメソッドで拡張する必要がありますか? – SubSevn