2009-08-26 13 views
0

私はいつもSpriteクラスを拡張しようとしているだけなので、何も表示されていなくても、私のオブジェクトは表示リストの一部になることができます(そしてEventDispatcher関数もあります)。しかし、にはが表示されます。含まれているオブジェクトは、表示リストへのアクセスのためにコンテナを参照するだけでよいので便利です。便宜上Spriteクラスを拡張していますか?

この誘惑に遭遇した人はいますか?
これは一般的なようだが、不適切と思われる。

不必要にSpriteクラスを拡張するのに相当なメモリコストはありますか?

答えて

0

なぜディスプレイリストに何かを表示したいのですか?あなたは言う:しかし、それは表示されるものを含むだろう。

表示可能なオブジェクトを作成することを意味する場合は、何かやって:

var container:Sprite = new Sprite(); 
var image:Sprite = new some_lib_image(); 
var image2:Sprite = new some_other_lib_image(); 
container.addChild(image); 
container.addChild(image2); 
stage.addChild(container); 

はその後、それが全く可能です。画像の追加と削除を管理するImageContainerというクラスを作成し、それをSpriteの代わりに使用したい場合は、それも完全に受け入れられます。私はそれを誘惑と呼んでいませんが、あなたが上記のコードに価値のあるものを追加しない限り、私はそれをしません。

不必要にSpriteクラスを拡張するのに相当なメモリコストはありますか?

特にありません。あなたのクラスのサイズは、一般に、sizeof(Sprite)+ sizeof(instanceVariables [])に近いものになります。ここで、instanceVariables []はクラスで宣言した新しい変数です。私はそれについて心配しません。構成は継承よりもコストがかかります。あまりにも多くのコンテナを不必要に使用しています。一般的なケースで私はそれについて心配することはありませんが、パーティクルシステムで5000個のパーティクルを作成する場合は、各パーティクルをできるだけシンプルに保ちます。

関連する問題