我正在製作一個Java遊戲,每當我啓動它時,沒有任何按鍵可以工作,直到按下回車鍵。這是關鍵的輸入代碼:按鍵輸入在按下輸入前不起作用
if(KeyInput.currentKey(KeyInput.W)) player.setUp();
if(KeyInput.currentKey(KeyInput.A)) player.setLeft();
if(KeyInput.currentKey(KeyInput.S)) player.setDown();
if(KeyInput.currentKey(KeyInput.D)) player.setRight();
if(KeyInput.currentKey(KeyInput.UP)) player.setDirection(0);
if(KeyInput.currentKey(KeyInput.RIGHT)) player.setDirection(1);
if(KeyInput.currentKey(KeyInput.DOWN)) player.setDirection(2);
if(KeyInput.currentKey(KeyInput.LEFT)) player.setDirection(3);
if(KeyInput.currentKey(KeyInput.ENTER)) player.setPunching();
我有一個類叫做KeyInput
和currentKey
只檢查是否有被按下的鍵,如果有,它會檢查是否在參數的關鍵是電流的方法一。下面是代碼:
public class KeyInput {
public static final int NUM_KEYS = 11;
public static boolean keyState[] = new boolean[NUM_KEYS];
public static boolean prevKeyState[] = new boolean[NUM_KEYS];
public static int W = 0;
public static int A = 1;
public static int S = 2;
public static int D = 3;
public static int ENTER = 4;
public static int UP = 5;
public static int LEFT = 6;
public static int DOWN = 7;
public static int RIGHT = 8;
public static int ESCAPE = 9;
public static int SHIFT = 10;
public static void setKey(int i, boolean b) {
if(i == KeyEvent.VK_W) keyState[W] = b;
else if(i == KeyEvent.VK_A) keyState[A] = b;
else if(i == KeyEvent.VK_S) keyState[S] = b;
else if(i == KeyEvent.VK_D) keyState[D] = b;
else if(i == KeyEvent.VK_ENTER) keyState[ENTER] = b;
else if(i == KeyEvent.VK_UP) keyState[UP] = b;
else if(i == KeyEvent.VK_LEFT) keyState[LEFT] = b;
else if(i == KeyEvent.VK_DOWN) keyState[DOWN] = b;
else if(i == KeyEvent.VK_RIGHT) keyState[RIGHT] = b;
else if(i == KeyEvent.VK_ESCAPE) keyState[ESCAPE] = b;
else if(i == KeyEvent.VK_SHIFT) keyState[SHIFT] = b;
}
public static void update() {
for(int i = 0; i < NUM_KEYS; i++) {
prevKeyState[i] = keyState[i];
}
}
public static boolean currentKey(int i) {
return keyState[i];
}
}
這setKey
方法是所謂的主類:
public void keyTyped(KeyEvent key) {}
public void keyPressed(KeyEvent key) {
KeyInput.setKey(key.getKeyCode(), true);
}
public void keyReleased(KeyEvent key) {
KeyInput.setKey(key.getKeyCode(), false);
}
我不知道爲什麼發生這種情況,我不知道,如果你們將能幫助我不知道我的遊戲編程方式。提前致謝! :)
您還沒有顯示的代碼最有趣的部分。這就像「Doc,兩年前我的狗的照片,但他現在病了,你能告訴他有什麼問題嗎?」 – Amadan
你是怎麼做的輸入?這是一個GUI程序嗎?還是你想輸入命令提示符窗口或Unix shell?你在運行什麼操作系統? – ajb
那麼KeyInput是什麼樣的? –