最近タンクゲームを作ったが、重大な問題が発生している。キーボード入力ではKeyListenerを使用しましたが、再生中に突然KeyListenerが応答しませんでした。キーが機能しなくなりました。私はインターネット上の問題を探していました。私はKeyBindingを使うべきであるとの多くの答えを見つけました。私はそうしましたが、問題は再び現れました。私は何をすべきか?KeyListenerとKeyBindingの問題
これは、KeyBindingのコードのほんの一部です。
public Action redTankBackwardReleased = new AbstractAction("action") {
private static final long serialVersionUID = 1L;
public void actionPerformed(ActionEvent e) {
Game.redTank.xSpeed = 0;
Game.redTank.ySpeed = 0;
}
};
panel.getInputMap().put(KeyStroke.getKeyStroke("released DOWN"), "8");
panel.getActionMap().put("8", redTankBackwardReleased);
すべてが完璧ですが、数秒後または多分1分後にキーが反応しなくなるだけです。わかりません。
のようなものでなければなりませんに。これをここやサイトで解決するための助けが必要な場合は、適切なコードを投稿したいと思うでしょう。プログラムや小さなスニペット全体を投稿するのではなく、あなたの問題を示す非常に小さなコンパイル可能な実行可能プログラム[mcve]を投稿することをお勧めします。 –
コードなしではあまりできません。私が与えることができる最高の勧告は、コンポーネントがフォーカスを持っている場合にのみ 'KeyEvent'を受け取るので、' FocusListener'を使ってフォーカスが失われた時を把握してください。それ以外にも、コードなしでできることはあまりありません。 – Paul
@Paul:彼がキーバインディングを使用している場合、フォーカスは問題にならないはずです*** ***彼は正しいInputMapを使用しますが、彼は彼のコードなしでどのInputMapを使用しているかわかりません。 –