2016-12-11 5 views
0

申し訳ありませんが、私はこれが新しいコンセプトではないことを私は知っています...しかし、何も研究していなくてもうまくいくようです。基本的には、異なるshift/ctrl/alt/enterキーを含むキーボード上のすべてのキーを認識できるようにしたい。これら以外のすべてのキーは一意のkeyCodeを返しますが、これらの重複を区別することはできません。処理3の左と右のシフトキーを区別する

変更を加えなければ、void keyPressed()は正常に動作します。私ができる重複キーimport java.awt.event.KeyEvent;を区別して、

void keyPressed (KeyEvent e) { 
    if (keyCode == SHIFT) { 
    int location = e.getKeyLocation(); 
    if (location == KEY_LOCATION_RIGHT) { 
     RShift = true; 
    } 
    if (location == KEY_LOCATION_LEFT) { 
     LShift = true; 
    } 
    } 
} 

を使用することを私に言ったんだが、いくつかの問題がこれで発生する:

  • 私は、ライブラリをインポートする場合、keyPressed()はすべての時に呼び出されることは決してありません。
  • ライブラリをインポートしても、KeyEventパラメータをkeyPressed()に取り出すと、存在しないKeyEventへの参照をコメントアウトしている限り動作します。
  • インポートしてパラメータを残しておけば、が存在しないというだけの文句ではありますが、それだけです。

逆オーバーライドなどが必要ですか?助けが大いにありがとう!

P.S.もう1つの関連する質問は、どのように左、中央、および右マウスボタン以上を区別できますか?私はこれらのスクロールホイールを得ることができますが、他のボタンはmouseButtonコード0を返します。ありがとう!

答えて

0

https://processing.org/reference/keyPressed_.html

keyPressed()関数は、キーを押すごとに時間と呼ばれています。押されたキーは、キー変数に格納されます。あなたはそうはパラメータは、この方法では、あなたがこのようPApplet

のキー変数を参照することはできません同じシグネチャを使用する必要がありますkeyPressed上書きする場合

私は

無効keyPressed()
を信じます** int型の場所=キー

編集:int型の場所=のKeyEvent

+0

「あなたはkeyPressedを上書きしたい場合は、そう何のパラメータは、この方法ではあなたが参照することはできません同じ署名を使用する必要があります。あなたはこれを説明できますか?私がちょうどキー変数またはkeyCodeを使うだけであれば、両方のシフトキーに同じ値を返します。 –

+0

okキーコードに戻る必要がありました.PackletのkeyEvent変数は、 –

+0

を使ってください。申し訳ありませんが、どうやってPAppletを使いますか?私はそれを聞いたことがないし、Eclipseのような別のIDE内でProcessingプロジェクトを作成するときに含めるだけのものだと思っています。私がデフォルトのProcessing IDEを使用している場合、これと何が関係していますか? –

関連する問題