Javajinput
ライブラリを使用してジョイパッドからデータを読み取っていますが、リロードControllers
に問題があります。これを使用してロードします:
public Controller[] findStickControllers() {
ControllerEnvironment ce =
ControllerEnvironment.getDefaultEnvironment();
Controller[] cs = ce.getControllers();
System.out.println(cs.length); //test
ArrayList<Controller> sel = new ArrayList<>();
for (Controller c: cs) {
if(c.getType() == Type.STICK) {
sel.add(c);
}
}
return sel.toArray(new Controller[]{});
}
これは正常に動作しますが、コントローラーを切断すると、これを呼び出すと再び見つかります。その逆も同様です (最初のチェックの後に接続すると、まったく見つかりません)。
これらの結果で、最初のルックアップの前にスリープを入れようとしました:
- コントローラーは、このメソッドが最初に呼び出されたときに (プログラムの開始時ではなく) 実際にスキャンされます。
- 再度呼び出されると、これは常に最初に返されたものと同じコントローラーを返します。
- 最初の呼び出しでも以下の警告が書き込まれます
- コントローラーが接続されている (そして動作している) 場合でも、切断され (それでも検出されます)、再接続されても動作しません。
ポイント 3 からの警告: (リストの形式が適切ではありませんでした)
WARNING: Found unknown Windows version: Windows 8
Attempting to use default windows plug-in.
Loading: net.java.games.input.DirectAndRawInputEnvironmentPlugin
私はWin 8を使用していますが、Win 7でも同じ問題がありました。マウスでもこれを試しましたが、同じ結果でした。
2 回目、3 回目、というようにコントローラーを実際にリロードするにはどうすればよいですか?