我正在開發一款遊戲,而且前段時間我在java中進行了編程,所以我忘記了一些東西,比如如何創建一個KeyListener,以便讀取java文檔,並提出了這個問題但是當我按下其中一個鍵時,球員不會移動。KeyListener不工作
以下是我的代碼。
這是Player.java
類(Player.java
延伸Entity.java
):
(速度= 1)
public void keyPressed(KeyEvent e){
if(e.getKeyChar() == 'W' | e.getKeyChar() == 'w' | e.getKeyCode() == KeyEvent.VK_UP){
yPos = -speed;
}
if(e.getKeyChar() == 'S' | e.getKeyChar() == 's' | e.getKeyCode() == KeyEvent.VK_DOWN){
yPos = speed;
}
if(e.getKeyChar() == 'A' | e.getKeyChar() == 'a' | e.getKeyCode() == KeyEvent.VK_LEFT){
xPos = -speed;
}
if(e.getKeyChar() == 'D' | e.getKeyChar() == 'd' | e.getKeyCode() == KeyEvent.VK_RIGHT){
xPos = speed;
}
}
public void keyReleased(KeyEvent e){
if(e.getKeyChar() == 'W' | e.getKeyChar() == 'w' | e.getKeyCode() == KeyEvent.VK_UP){
yPos = 0;
}
if(e.getKeyChar() == 'S' | e.getKeyChar() == 's' | e.getKeyCode() == KeyEvent.VK_DOWN){
yPos = 0;
}
if(e.getKeyChar() == 'A' | e.getKeyChar() == 'a' | e.getKeyCode() == KeyEvent.VK_RIGHT){
xPos = 0;
}
if(e.getKeyChar() == 'D' | e.getKeyChar() == 'd' | e.getKeyCode() == KeyEvent.VK_LEFT){
xPos = 0;
}
}
這是Entity.java
類:
public void move(){
x += xPos;
y += yPos;
}
這是在Entities.java
等級:
KeyAdapter playerAdapter = new KeyAdapter(){
@Override
public void keyPressed(KeyEvent e){
player.keyPressed(e);
}
@Override
public void keyReleased(KeyEvent e){
player.keyReleased(e);
}
};
public void move(){
//Player
player.move();
}
,這是在Level.java
類(Level.java
擴展JComponent的):
在級別()方法:addKeyListener(entities.playerAdapter);
在的paintComponent(圖形克)方法:
if(entities.player.getState())
g2d.drawImage(entities.player.getImage(), entities.player.getX(), entities.player.getY(), this);
和int run()方法:entities.move();
那麼,我在做什麼錯了?
什麼是'getState()'? –
@ PM77-1檢查玩家是否存活 –
它在測試中返回「true」嗎? –