改进后的TankFrame.class
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class TankFrame extends Frame
{
private Tank tank;
private static int GAME_WIDTH = 800;
private static int GAME_HEIGHT = 600;
public TankFrame()
{
this.setTitle("tank war");
this.setLocation(300,300);
this.setSize(GAME_WIDTH,GAME_HEIGHT);
this.addKeyListener(new TankKeyListener());
tank = new Tank(100,100,Direction.R);
}
Image offsetImage = null;
@Override
public void update(Graphics g)
{
if (offsetImage == null)
{
offsetImage = this.createImage(GAME_WIDTH,GAME_HEIGHT);
}
Graphics gOffScreen = offsetImage.getGraphics();
Color color = gOffScreen.getColor();
gOffScreen.setColor(Color.DARK_GRAY);
gOffScreen.fillRect(0,0,GAME_WIDTH,GAME_HEIGHT);
gOffScreen.setColor(color);
paint(gOffScreen);
g.drawImage(offsetImage,0,0,null);
}
@Override
public void paint(Graphics g)
{
tank.paint(g);
}
private class TankKeyListener extends KeyAdapter
{
@Override
public void keyPressed(KeyEvent e)
{
tank.keyPressed(e);
System.out.println(e);
}
@Override
public void keyReleased(KeyEvent e)
{
tank.keyReleased(e);
System.out.println(e);
}
}
}