course2 解决窗口闪烁问题

master
Jian Hu 3 years ago
parent 84d29842e6
commit a2d7f6e397

Binary file not shown.

@ -15,7 +15,10 @@ public class Tank {
}
public void paint(Graphics g) {
Color color = g.getColor();
g.setColor(Color.YELLOW);
g.fillRect(x, y,50,50);
g.setColor(color);
move();
}

@ -7,12 +7,16 @@ import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TankFrame extends Frame {
private static final int GAME_WIDTH = 800;
private static final int GAME_HEIGHT = 600;
Image image = null;
Tank tank = new Tank(500, 500, Direction.UP);
Bullet bullet = new Bullet(520, 440, Direction.UP);
public TankFrame(){
setVisible(true);
setSize(800, 600);
setSize(GAME_WIDTH, GAME_HEIGHT);
setResizable(false);
setTitle("tank war");
this.addKeyListener(new MyKeyListener());
@ -24,6 +28,20 @@ public class TankFrame extends Frame {
});
}
@Override
public void update(Graphics g) {
if(image == null){
image = this.createImage(GAME_WIDTH, GAME_HEIGHT);
}
Graphics imgGraphic = image.getGraphics();
Color color = g.getColor();
imgGraphic.setColor(Color.WHITE);
imgGraphic.fillRect(0,0, GAME_WIDTH, GAME_HEIGHT);
imgGraphic.setColor(color);
paint(imgGraphic);
g.drawImage(image, 0, 0, null);
}
@Override
public void paint(Graphics g){
tank.paint(g);

Loading…
Cancel
Save