⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 newevent.java

📁 example2 众多JAVA实例源码...学习java基础的好帮手
💻 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 + -