私はいくつかのコードをクリーンアップする方法を検討しています。私は以下を持っていますオブジェクトを初期化するときにメソッドを呼び出す
var sprite1 = new Sprite(_content.Load<Texture2D>("Content/Block.png"));
sprite1.Position = new Vector2f(100, 100);
sprite1.SetInput(Key.A, Key.D, Key.W, Key.S);
var sprite2 = new Sprite(_content.Load<Texture2D>("Content/Block.png"));
sprite2.Position = new Vector2f(200, 100);
sprite2.SetInput(Key.Left, Key.Right, Key.Up, Key.Down);
_sprites = new List<Sprite>()
{
sprite1,
sprite2,
};
リストに追加するときに「スプライト」を初期化したいと思います。しかし、私が抱えている問題は、 "SetInput"メソッドです。その方法はオプションです。
私は、これは文法的に正しくないですけど、下の私が話している事の並べ替えは約
_sprites = new List<Sprite>()
{
new Sprite(_content.Load<Texture2D>("Content/Block.png")) { Position = new Vector2f(100, 100), SetInput(Key.A, Key.D, Key.W, Key.S) },
};
あなたは私が道に似た方法を呼び出そうとしています見ることができるようにしますプロパティを設定できます。ここで
私はキー
public Sprite(Texture2D texture, Key? left, Key? right, Key? up, Key? down)
のためのオプションのパラメータのコンストラクタキー
public Sprite(Texture2D texture, Key left, Key right, Key up Key down)
を得ると思っています方法があります
「スプライト」クラスのデリゲートを作成します化され、その後、すべての_sprites周りのループ、方法
私は開始時に置かれているコードを呼び出す「より良い」方法がある場合、私はちょうど思ったんだけど、大丈夫ですか?
ありがとうございました。
第二コンストラクタが最も期待されるAPIになりたい正確に何を得るでしょう。 –
この単純なケースでは、おそらく2番目のコンストラクタを使用します。多くのオプションがあるクラスの場合、私は一般的にメソッドチェインを持つビルダークラスを使います: 'new Builder(<必須の引数>)Position(...)。Input(...)。Build()' – Lumen
もちろん、 4つのキーを保持するラッパークラス 'Input'を作成し、' SetInput'を置き換える 'Sprite.Input'プロパティを追加することもできます。 – Lumen