2011-06-28 5 views
0

私は2つの子、RotatedSpriteSheetとFlippedSpriteSheetを持つSpriteSheetと呼ばれる基本クラスを持っています。 SpriteSheetにはフレームが含まれ、RotatedSpriteSheetには回転のためのフレーム+フレームが含まれ、FlippedSpriteSheetには元のフレーム+反転フレームが含まれます。このデザインを修正するには?私はメソッドをオーバーロードできません

SpriteSheetを参照するSpriteという別のクラスがあります。この、あなたが見ることができるように

imageData = _spriteSheet.calculateFrame(animationFrame, flipped, angle);

:Spriteスプライトはそれがアニメーションだ更新するとき、それはのような呼び出しを行うなど、画像が反転しているかどうか、その位置、現在のアニメーションフレーム、角度を、保存しますSpriteSheetクラスがそのデータを使用していないときに、SpriteSheetが反転または角度を要求する関数を持つべきではないため、かなり愚かな設計です。

私は、RotatedSprite、AlphadSprite、FlippedSprite、FlippedAndRotatedSpriteなどの複数の "Sprite"オブジェクトを使用したくないという事実に起因すると考えています。

私が考えることができる唯一の解決策は、アニメーションフレーム、フリップされた状態と角度を取るcalculateFrame()の代わりに、Spriteオブジェクトへの参照を渡して、SpriteSheet(とその子)を "検査する"スプライトとデータ自体を計算します。そのデザインの問題は、私はスプライト(アニメーションデータを中心に)だけローカルな余分なデータをパブリックにしなければならないということです。私はそれが大したことだとは思わない。これが最善の解決策ですか?

あなたのヒントや提案をありがとう。

答えて

1

スプライトまたはスプライトシートを変換するために必要なすべての情報をカプセル化する別の階層を作成します。

+0

したがって、calculateFrame(animationFrame、transformation)のようになりますか?回転、アルファなどの詳細はすべてそろっていますか?スプライトオブジェクトを検査するよりも良いでしょう。 –