📄 newevent.java
字号:
package opusmicro.demos.event;
import javax.microedition.lcdui.*;
public class NewEvent implements Runnable {
KeyEventCanvas c = null;
/*
* 用来判断是否有键被按下
*/
protected boolean switchPoint;
/*
* 这个数组用来存储所有同时被按键的键码
*/
protected byte[] keyCode;
/*
* 访问数组的索引
*/
byte index;
public NewEvent(KeyEventCanvas c) {
this.c = c;
keyCode = new byte[2];
}
/*
* 这个方法把被按键的键码存储到数组中
*/
public synchronized void startAction(int keyCode) {
this.keyCode[index] = (byte) keyCode;
index = (byte) ((index + 1) % this.keyCode.length);
}
/*
* 当某个键被释放时,这个方法把该键存储在数组中的键码置为0
*/
public synchronized void stopAction(int keyCode) {
for ( int i = 0 ; i <= this.keyCode.length - 1 ; i++) {
if ( this.keyCode[i] == (byte) keyCode) {
this.keyCode[i] = 0;
break;
}
}
}
/*
* 这个方法用来判断是否有被按下的键,返回true表示有键按下,返回false表示没有键被按下
*/
public synchronized boolean getSwitchPoint() {
this.switchPoint = false;
for ( int i = 0 ; i <= this.keyCode.length - 1 ; i++) {
if ( this.keyCode[i] != 0) {
this.switchPoint = true;
break;
}
}
return this.switchPoint;
}
/*
* 返回字节数组
*/
public synchronized byte[] getKeyCode() {
return this.keyCode;
}
public void run() {
byte[] tmp = this.getKeyCode();
while ( true) {
while ( this.getSwitchPoint()) {
/*
* 通过这个循环遍历数组,遇到被按下的键就进行处理
*/
for ( int i = 0 ; i <= tmp.length - 1 ; i++) {
if ( tmp[i] != 0) {
switch ( c.getGameAction(tmp[i])) {
case Canvas.UP:
c.y--;// y是在Canvas中定义的一个属性,表示y轴坐标
break;
case Canvas.DOWN:
c.y++;
break;
case Canvas.LEFT:
c.x--;// x是在Canvas中定义的一个属性,表示x轴坐标
break;
case Canvas.RIGHT:
c.x++;
break;
case Canvas.GAME_A :c.numbera=true;break;
case Canvas.GAME_B:c.numberb=true;break;
default:c.numbera=false;c.numberb=false;break;
}
}
}
c.repaint();
// c.serviceRepaints();
try {
Thread.sleep(10);
}
catch (InterruptedException e) {
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -