package PlayGame; import java.awt.*; import java.awt.event.KeyEvent; public class Plane extends GameObject { boolean left,right,up,down;//飞机方向 public void drawSelf(Graphics g) { g.drawImage(img, (int) x, (int) y, null); if (left) { //如果 left 是真,坐标x-speed(x = 50 ,speed = 1,就是说明按一下left键 ,就成了49) x -= speed; } if(right){ x+=speed; } if(up){ y-=speed; } if(down){ y+=speed; } } public Plane(Image img, double x, double y) { this.img = img; this.x = x; this.y = y; } //按下某个键,增加相应的方向 public void addDirection(KeyEvent e){ switch (e.getKeyCode()){ case KeyEvent.VK_LEFT: //KeyEvent.VK_left :告诉left对应的数字是多少 left = true; break; case KeyEvent.VK_UP: up = true; break; case KeyEvent.VK_RIGHT: right = true; break; case KeyEvent.VK_DOWN: down = true; break; } } //按下某个键,取消相应的方向 ,如果不取消 就会一直向这个方向移动 public void minusDirection(KeyEvent e){ switch (e.getKeyCode()){ case KeyEvent.VK_LEFT: //KeyEvent.VK_left :告诉left对应的数字是多少 left = false; break; case KeyEvent.VK_UP: up = false; break; case KeyEvent.VK_RIGHT: right = false; break; case KeyEvent.VK_DOWN: down = false; break; } } }
KeyEvent对象描述事件的特性(按下,放开,或者敲击一个键)和对应的值 。
当按下一个键时会调用KeyPressed处理器,当松开一个键时会调用KeyReleased处理器,当输入一个统一编码时会调用KeyTyped处理器。如果这个键不是统一码(如功能键,修改键,动作键和控制键) 每个按键事件有一个相关的按键字符和按键代码,分别由KeyEvent中的getKeyChar()和getKeyCode()方法返回 getKeyChar(): char 返回这个事件中和键相关的字符 getKeyCode(): int 返回这个事件中和键相关的整数键 getKeyCode() 返回定义在表中的值 getKeyChar() 返回输入的字符 keyPressed(e: KeyEvent) 在源组件上按下一个键后被调用 KeyReleased(e: KeyEvent) 在源组件上释放一个键后被调用 KeyTyped(e: KeyEvent) 在源组件上按下一个键然后释放该键后被调用 *************************************************************************************************** boolean 定义了 left , right ,up ,down 四个键(即 真假值 true false) KeyEvent.VK_?? :表示提取这个键盘的值,如 KeyEvent.VK_UP 表示 up键的整数值, KeyEvent.VK_UP 是38,就不需要去记忆上键的值。 ********************************************************************************************* 在重画飞机中,采用对应的真假值来改变下一次飞机重画时的坐标。