2017-06-10 22 views
-1

この問題の多くの箇所で答えを探しましたが、自分の状況に適したものが見つかりませんでした。私はMonoGame(Microsoft XNA)でゲームを開発しています。私は入力を処理するクラスを用意したいと思います。 XInputはキーが特定のフレームでダウンしているかどうかをチェックする機能しか持っていないので、自分が押されたか、リリースされたか、保持されているかをチェックする独自の関数を作りたいと思う。関数内の引数としてEnumを渡す

public static void getKeyPress(Enum key) 
    { 
     updated = Keyboard.GetState(); 
     if (updated.IsKeyDown(/* what can i put here to have key be the 'Keys' enum */)) 
     { 

     } 

     if (updated.IsKeyDown(Keys.Space)) 
     { 

     } 

    } 

だから、私の問題は、私は私が私の関数の引数として持つキー列挙型を使用する方法を見つけ出すことができないということです。

は、ここに私の問題です。私はそれをXNAフレームワークに含まれているIsKeyDown関数の引数にしようとしています。 IsKeyDown関数は、フレームワークにあらかじめ組み込まれているKeys列挙からのものだけを受け入れます。 2番目のifステートメントは、Keys.Spaceを使用して関数の正しい使い方を示しています。 、誰もがこれで私を助けることができれば、私は、完全に失われたよ

if (getKeyPress(Backspace)) 
{ 
    //backspace was pressed 
} 

こと:

if (getKeyPress(Keys.Backspace)) 
{ 
    //backspace was pressed 
} 

それとも、これも動作します:私はこのようなgetKeyPress機能の仕事をしたいのですが大変感謝しています。

+0

メソッド(オブジェクトの列挙型) –

+0

私はあなたが正しく、あなたは自分のメソッドに 'Keys'を渡すことができるようにしたい理解していた場合、あなただけの単語' Enum'を変更してこの問題を解決することができるはずあなたの署名の中で 'キーズ'。あなたの質問を正しく理解していますか? – pstrjds

+0

私は答えを追加しましたが、あなたが使用している 'Keys'列挙型については少し混乱しています。私が知る限り、Backspaceの値として' Keys.Back'を持つXNAフレームワークについて言及しています([documentation] https://msdn.microsoft.com/en-us/library/microsoft.xna.framework.input.keys(v=xnagamestudio.40).aspx))ではなく、 'Keys.Backspace' – pstrjds

答えて

1

私が正しく理解している場合は、渡すタイプを指定するためにメソッドのシグネチャを変更するだけでよいでしょう。あなたの場合、Keys列挙が必要です。

public static void getKeyPress(Keys key) 
{ 
    updated = Keyboard.GetState(); 
    if (updated.IsKeyDown(key)) 
    { 
    } 

    if (updated.IsKeyDown(Keys.Space)) 
    { 
    } 
} 
+0

それはうまくいった。私はEnum型を扱うのにまだ新しいです、どうもありがとうございます。私はタイマーが立ち上がったときにこれを答えとして受け入れます。 –

関連する問題