2017-12-30 20 views
1

処理プロジェクトでナビゲーションシステムを実装したいと考えています。ユーザー(オブジェクトをナビゲートするユーザー)が左に曲がりたい場合は、「a」ボタンを押します。ここに私のコールバック関数は、keyPressedである:キーを保持し続けるコールバックを処理する

void keyPressed() { 
... 
if(key == 'a') { ship.plainAngle -= 0.1; } 
else if(key == 'd') { ship.plainAngle += 0.1; } 
} 

90度、左回しにするために「」キーをスパムている私は避けたいです。私はそれを直接(0.1)に影響する値を増やしてみましたが、それは見た目が遅くなりました。ユーザーがキーを保持している間、コールバックを連続して処理する可能性があると聞きました。コールバック関数keyPressedを使用するとわかりましたが、うまくいくはずですが、それは私のためには機能しません。コールバック関数のコードは1回だけ実行されます。私はその問題を解決する方法を知らない。

+0

情報が不十分です。 どのようにコールバックを設定していますか?どのUIライブラリを使用していますか? – mayaknife

+0

私はライブラリなしで純粋な処理を使用します。上記のように宣言して、私のメインプロジェクトファイルにコールバック関数を設定しました。 – Mark

+0

将来、このような切断されたスニペットの代わりに[mcve]を投稿してください。 –

答えて

1

booleanキーを使用して、aキー(または気になるキー)が現在押されているかどうかを確認します。 関数でtrueに設定し、mouseReleased()関数のfalseに設定します。 draw()関数では、その変数をチェックして、現在キーが押されていれば何かを行うことができます。

恥知らずの自己宣伝:処理可能なキーボード入力のチュートリアルを書いたhere。先ほど概説したアプローチで、複数のキー入力を処理するセクションを参照してください。

関連する問題