J2SE 坦克大战单机版
t.start();
第二种方法是:
new Thread(new PaintThread()).start();
两种方法是等价的。
7.版本 0.41
功能:使用双缓冲消除闪烁现象
原因:刷新重画频率太快,paint 方法还没有完成,反应现象就是逐条显示
解决方法:将所有东西画在虚拟的图片上,一次性显示出来
先在属性域中声明 Image 对象 offScreenImage 为 null。因为 repaint 方法在执行的时候会先调用 update 方法,因此
在调用 paint 方法之前,我们在 update 方法中进行绘画,然后再传送给 paint 方法。
public void update(Graphics g) {
if (offScreenImage == null){
offScreenImage = this.createImage(800,600);
}
Graphics gOffScreen = offScreenImage.getGraphics();//获得背后图片画笔
Color c = gOffScreen.getColor();
gOffScreen.setColor(Color.green);
gOffScreen.fillRect(0, 0, 800, 600);
gOffScreen.setColor(c);
paint(gOffScreen);//将内容画在图片上
g.drawImage(offScreenImage, 0, 0, null);//将背后图片的内容画在前景图片上
}
8.版本 0.5
代码重构:为了方便窗口大小改变,需要将窗口宽度和高度定义为常量,这样定义:
public static final int GAME_WIDTH = 800;
public static final int GAME_HEIGHT = 600;
然后将程序中涉及到窗口大小的量用上述常量代替。
9.版本 0.6
添加键盘的监听,在此定义为内部类。
功能:让坦克听从我们的指挥
添加键盘监听器类 KeyMonitor
TankClient 添加键盘监听器
针对不同的健改变坦克的位置,与重画线程结合产生不同的方向运动。本段代码如下:
private class KeyMonitor extends KeyAdapter{
public void keyPressed(KeyEvent e) {
- 4 -
评论0
最新资源