Ich habe begonnen, ein einfaches Plattformspiel in Java zu schreiben. Als Test habe ich dieses einfache Programm geschrieben, das ein Rechteck um das Applet bewegt, wenn Sie die Pfeiltasten drücken. Die Schlüsselereignisse haben überhaupt nicht geschossen. Hier ist der Code:Java - KeyListener Ereignisse nicht feuern
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Game extends Applet implements Runnable, KeyListener
{
//setup data
Thread t;
Image buffimg;
Graphics draw;
Dimension dim;
//game variables
int charx = 400;//rectangles X and Y positions
int chary = 50;
boolean leftArrow = false;
public void init()
{
setSize(800, 500);
t = new Thread(this);
t.start();
addKeyListener(this);
}
public void run()
{
while(true)
{
repaint();
moveChar();//move the rectangle
try {
t.sleep(1000/30);
} catch (InterruptedException e) { ; }
}
}
public void keyPressed(KeyEvent e)
{
int k = e.getKeyCode();
if(k == 37)
{
leftArrow = true;
charx--;
}
}
public void keyReleased(KeyEvent e)
{
if(e.getKeyCode() == 37)
{
leftArrow = false;
}
}
public void keyTyped(KeyEvent e)
{
}
public void moveChar()
{
//move rectangle on left arrow key press
if(leftArrow == true)
{
charx--;
}
}
public void paint(Graphics g)
{
g.drawRect(charx, chary, 100, 100);
}
public void update (Graphics g)
{
//double buffering
// initialize buffer
if (buffimg == null)
{
buffimg = createImage (this.getSize().width, this.getSize().height);
draw = buffimg.getGraphics();
}
// clear screen in background
draw.setColor (getBackground());
draw.fillRect (0, 0, this.getSize().width, this.getSize().height);
// draw elements in background
draw.setColor (getForeground());
paint (draw);
// draw image on the screen
g.drawImage (buffimg, 0, 0, this);
}
}
Warum feuern sie nicht und wie soll ich das beheben?
ich das Rechteck nach links withouth Probleme bewegen können. Sind Sie sicher, dass Sie die neueste Version Ihres Codes ausgeführt haben? – Rob
Ja, könnte es ein Problem mit meinen Eclipse-Einstellungen sein? – Joe
Danke Andrew, das scheint es behoben zu haben. – Joe