[英]KeyListener events apparently not firing in java applet
我剛剛開始學習編程applet和java GUI,我試圖制作一個簡單的游戲。 目前,我有主要類(游戲)和玩家類(玩家)我讓玩家畫到屏幕上,但我正在努力讓關鍵事件發揮作用,任何幫助贊賞!
玩家圖像顯示完全正常,但當我完全按下按鍵時位置不會改變。
編輯:為播放器發布錯誤代碼,更新
Game.java:
public class Game extends Applet {
Player player;
@Override
public void init() {
player = new Player(this);
this.setSize(800, 600);
addKeyListener(player);
}
@Override
public void paint(Graphics g) {
player.paint(g);
}
}
Player.java:
public class Player implements KeyListener {
Game game;
Image image;
int x;
int y;
public Player(Game game) {
this.game = game;
x = 0;
y = 0;
image = game.getImage(game.getCodeBase(), "images/Player.png");
}
public void paint(Graphics g) {
g.drawImage(image, x, y, game);
}
@Override
public void keyTyped(KeyEvent e) {
return;
}
@Override
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_A:
x -= 1;
break;
case KeyEvent.VK_D:
x += 1;
break;
case KeyEvent.VK_S:
y += 1;
break;
case KeyEvent.VK_W:
y -= 1;
break;
}
game.repaint();
}
@Override
public void keyReleased(KeyEvent e) {
return;
}
}
面板可能要么沒有焦點,要么沒有焦點。
試試這個代碼。 我將鍵更改為左/右/上/下箭頭。 為簡單起見,我把它留作了基於AWT的applet。
// <applet code='Game' width=400 height=100></applet>
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Game extends Applet implements KeyListener {
Player player;
@Override
public void init() {
player = new Player(getImage(32));
addKeyListener(this);
setFocusable(true);
requestFocusInWindow();
}
@Override
public void paint(Graphics g) {
player.paint(g);
}
public Image getImage(int size) {
Image img = createImage(size,size);
Graphics g = img.getGraphics();
g.setColor(Color.RED);
g.fillRect(0,0,size,size);
g.dispose();
return img;
}
@Override
public void keyTyped(KeyEvent e) {
return;
}
@Override
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_LEFT:
player.x -= 1;
break;
case KeyEvent.VK_RIGHT:
player.x += 1;
break;
case KeyEvent.VK_DOWN:
player.y += 1;
break;
case KeyEvent.VK_UP:
player.y -= 1;
break;
}
repaint();
}
@Override
public void keyReleased(KeyEvent e) {
return;
}
}
class Player {
Image image;
int x;
int y;
public Player(Image image) {
x = 0;
y = 0;
this.image = image;
}
public void paint(Graphics g) {
g.drawImage(image, x, y, null);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.