| MIDP2.0中的键盘事件 |
|
|
|
|
Author: 一滴蔚蓝色 | Date: 2008-02-29 | View: 684
|
开发技术 -
程序设计
| ||||
|
作者:潇潇 出处:www.j2mefans.com 该文章为本站原创,如有引用,请注明出处和作者 看 看MIDP2.0的方法,因为MIDP2.0使用GameCanvas类,所以如果要检查特定的按键是否被按下,只需要检查getKeyStates() 的返回值与这些键值进行按位与(&),并根据计算结果来判断就可以了。稍微麻烦些,和paint方法一样,我们可以自定义他的名称: public void input() { int keystates = getKeyStates(); if ((keystates& UP_PRESSED)!= 0 ) y = Math.max(0, y - 1); else if(( keystates & DOWN_PRESSED ) != 0) y = Math.min(getHeight(), y + 1); if((keystates & LEFT_PRESSED ) != 0 ) x = Math.max(0, x - 1); else if((keystates & RIGHT_PRESSED) != 0) x = Math.min(getWidth(), x + 1); } 或者使用下面的形式: public void input() { int keystates = getKeyStates(); switch(keystates) { case UP_PRESSED: y = Math.max(0, y - 1); break; case DOWN_PRESSED: y = Math.min(getHeight(), y + 1); break; case LEFT_PRESSED: x = Math.max(0, x - 1); break; case RIGHT_PRESSED: x = Math.min(getWidth(), x + 1); break; } } 例子程序: /** * 文件名:Ocanvas.java * 画布类 */ import javax.microedition.lcdui.game.GameCanvas; import javax.microedition.lcdui.*; //import java.io.*; //import java.util.*; public class OCanvas extends GameCanvas implements Runnable { //定义变量 private Display display; private boolean sleeping; private long frameDelay; private int XSpeed,YSpeed; private int x,y; public OCanvas(Display d) { //类构造函数,初始化类变量 super(true); display = d; // 设置帧频 (30 fps) frameDelay = 33; } void start() { // 设置这个画布为当前屏幕 display.setCurrent(this); // 初始化一些游戏中的变量,载入相关图片 x=getWidth()/2-10; y=getHeight()/2-10; XSpeed = YSpeed = 3; // 开始动画线程 sleeping = false; Thread t = new Thread(this); t.start(); } public void stop() { // 停止动画线程 sleeping = true; } public void run() { // 动画线程开始后运行 Graphics g = getGraphics(); // 主游戏循环 while (!sleeping) { //更新游戏中的数据变量 input(); //更新屏幕显示 paint(g); //线程休眠 try { Thread.sleep(frameDelay); } catch (InterruptedException ie) {} } } //在这里更新游戏中的数据变量 private void update() { x=XSpeed+x; y=YSpeed+y; if (x < 0) x=getWidth(); if(x>getWidth()) x=0; if (y < 0) y=getHeight(); if(y>getHeight()) y=0; } //这里添加对屏幕的绘制 public void paint(Graphics g) { // 清除屏幕 g.setColor(0xffffffff); g.fillRect(0, 0, getWidth(), getHeight()); // 重绘屏幕 g.setColor(0,0,0); g.fillRect(x,y,20,20); // 刷新屏幕缓冲区 flushGraphics(); } //处理按键信息 //midp2。0方法 public void input() { int keystates = getKeyStates(); switch(keystates) { case UP_PRESSED: y = Math.max(0, y - 1); break; case DOWN_PRESSED: y = Math.min(getHeight(), y + 1); break; case LEFT_PRESSED: x = Math.max(0, x - 1); break; case RIGHT_PRESSED: x = Math.min(getWidth(), x + 1); break; } } } 本文关键字: MIDP2.0 键盘 事件 阅读数: 685 | 打印 | E-mail
|
||||||||
| (MIDP1.0中处理键盘输入) < 上一篇 | 下一篇 > (使用双缓冲区) |
|---|