1.一般的なベストプラクティスはありません。
ゲームに多数の(複雑な形状の)要素、パーティクルなどがある場合、ビットマップバッファーアプローチの方がはるかに高速になります。また、ビットマップバッファーは、スプライトの複雑さが増すにつれて、より適切にスケーリングされます。より複雑なシェイプやトゥイーン(シェイプトゥイーン)アニメーションを使用すると、ベクターレンダラーは遅くなりますが、他にもいくつかの利点があります。
- 品質を損なうことなく、アセットを自由にスケーリングしたり、シーンにズームインすることもできます。
- 回転または傾斜などの他の変換は、ベクターグラフィックスで実行する方がはるかに簡単です。
つまり、結論としては、どのようなゲームを構築しているのかということになります。
2.ビットマップスプライトシートの代わりにMovieClipsを使用する
AS3 Spriteクラスではなく、「ビットマップスプライトシート」を意味していると思いますか?
これは実際には違いはありません。MovieClipベースのアニメーションは、いつでもアニメーションビットマップに変換できます。手動で、ムービーをフレームにエクスポートしてスプライトシートに変換するか、動的に実行時にMovieClipからスプライトシートをレンダリングします。これが私がこれを行う方法です:
- MovieClipとそのインスタンスを作成します
stop()
。
new BitmapData
ムービークリップと同じ幅と高さのオブジェクトを作成します。
- MovieClipをBitmapDataにレンダリングするには、draw()メソッドを使用します。
- BitmapDataオブジェクトを配列またはベクターに格納します。
- ムービークリップの次のフレームに移動し、ステップ2〜4を繰り返します。これは、ムービークリップの最後のフレームに到達するまで行います。また、MovieClipフレームの最大幅と最大高さで2つの変数を更新することをお勧めします(これらはフレームごとに変わる可能性があるため)。
- これで、格納されているすべてのBitmapDataオブジェクトをスプライトシートに組み合わせることができます(BitmapData.copyPixels()を使用)
3.スプライトベースのアニメーション
最初の質問への回答で述べたように、それに対する明確な回答はありません。たとえば、オブジェクトで多くの変換を実行する必要がある場合。スケーリングと回転あなたはフラッシュネイティブレンダラを使用して、おそらくより良いオフにしています。あなたは事前に定義されたアニメーションを得た場合、それはスプライト・シート(手動または動的)に焼くことができ、そしてあなたが同時にスプライトの数百を表示する必要がある場合は、ビットマップのレンダリングエンジンのために行きます。