?? newevent.java
字號:
package opusmicro.demos.event;
import javax.microedition.lcdui.*;
public class NewEvent implements Runnable {
KeyEventCanvas c = null;
/*
* 用來判斷是否有鍵被按下
*/
protected boolean switchPoint;
/*
* 這個數(shù)組用來存儲所有同時被按鍵的鍵碼
*/
protected byte[] keyCode;
/*
* 訪問數(shù)組的索引
*/
byte index;
public NewEvent(KeyEventCanvas c) {
this.c = c;
keyCode = new byte[2];
}
/*
* 這個方法把被按鍵的鍵碼存儲到數(shù)組中
*/
public synchronized void startAction(int keyCode) {
this.keyCode[index] = (byte) keyCode;
index = (byte) ((index + 1) % this.keyCode.length);
}
/*
* 當某個鍵被釋放時,這個方法把該鍵存儲在數(shù)組中的鍵碼置為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;
}
/*
* 返回字節(jié)數(shù)組
*/
public synchronized byte[] getKeyCode() {
return this.keyCode;
}
public void run() {
byte[] tmp = this.getKeyCode();
while ( true) {
while ( this.getSwitchPoint()) {
/*
* 通過這個循環(huán)遍歷數(shù)組,遇到被按下的鍵就進行處理
*/
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 + -