J2ME编程中的三种低级用户界面事件处理技术比较
作者:陈跃峰
出自:http://blog.csdn.net/mailbomb
在J2ME的低级用户界面编程中,进行事件处理是经常使用到的技术之一,因为处理手机键盘上的按键事件是最常使用到的一种,所以就以此为中心,介绍一下实际使用过程中三种处理方式进行说明:
1、 覆盖keyPressed方法
在继承了Canvas的界面中,如果需要进行按键的处理,我们只需要在该类中覆盖Canvas类里面的这个方法,当手机按键被按下时,系统会自动调用该方法,并把被按下的按键的键值(keyCode)作为参数传递进来。所以如果需要处理按键事件,只需要在该方法内部检测按下的按键的键值就可以了。
在手机键盘上,可以简单的分为功能键区域和数字键区域,功能键指手机上的左右软键,中间的导航键以及接听电话和挂机键等,数字键区域指手机键盘上的0-9数字键以及*号和#号键。其中功能键的个数以及键值,不同的手机区别很大,而数字键的区域的按键个数,以及按键的键值都是一样的。
检测键值有如下两种方法:
a) 直接使用keyCode值
直接使用keyCode值的代码有如下两种,分别是:
if(keyCode == 52){
//处理代码
}
或者:
if(keyCode == Canvas.KEY_NUM4){
//处理代码
}
以上是使用按键处理中的两种代码书写风格,建议实际使用过程中使用第二种,这样代码容易阅读。
而在实际的游戏开发过程,除了一些特殊的功能键,例如手机上的左右软键,很少使用这种方式进行编写,而是采用下面的方式进行处理。
b) 使用gameAction(游戏动作)
gameAction是一种将手机键盘映射成为游戏动作的机制,通过这种机制,可以使不同手机上的按键都能转换为类似或者是相同的游戏动作,当然这个工作是由每个手机厂商实现的。
实际使用中的代码如下:
//将keyCode转换为游戏动作
int action = getGameAction(keyCode);
其中,keyCode和游戏动作的对应关系如下:
Canvas.UP——数字键2和向上导航键
Canvas.DOWN——数字键8和向下导航键
Canvas.LEFT——数字键4和向左导航键
Canvas.RIGHT——数字键6和向右导航键
Canvas.FIRE——数字键5和确定导航键
Game_A、Game_B、Game_C、Game_D分别对应键盘上的1、3、7、9或者是7、9、*、#键。
转换成游戏动作以后的事件处理代码如下:
switch(action){
case Canvas.LEFT://向左
//处理代码
break;
case Canvas RIGHT://向右
break;
case Canvas.UP://向上
break;
……
}
这个就是MIDP1.0中最常使用的按键处理方式。但是无论这种方式如何的优越,它还是无法摆脱keyPressed方法的束缚。
这样就将游戏编程中的三种逻辑:延迟、响应用户操作、重新绘制,隔离了开来,分别在用户线程和系统线程中进行。
为了解决这个不足,MIDP2.0在GameCanvas内部引入了一种新的事件处理方式按键状态(keyStates)机制。
2、 使用keyStates
按键状态指系统通过一个变量来记录手机键盘上每个和游戏动作有关的按键,如果该键按下则设置对应的位(bit)为1,否则为0,然后可以通过位运算获得哪个按键被按下。
注意:按键状态只能在MIDP2.0的GameCanvas子类中里面使用,而且只能处理和游戏相关的按键。如果支持该处理方式处理游戏按键的话,将在keyPressed方法中无法接收到和游戏相关的按键,其他按键还可以正常接收响应。
如果要使用该功能,首先要在GameCanvas子类的构造方法中,让该界面支持该操作,这个步骤可以使用GameCanvas的构造方法来实现,代码如下:
//使该界面支持按键状态处理
super(true);
这样该界面就可以进行按键状态处理。和前面的按键处理不同,该种处理方式可以脱离keyPressed方法的限制,也就是说可以写在任意的处理方法内部,只需要在线程中调用即可。
使用该处理方式,无论线程中的延迟多么长,系统都可以保持该按键的状态。这个好处是其他处理方式无法做到的。
首先,获得游戏按键状态,代码如下:
//获得游戏的按键状态
int states = getKeyStates();
该代码的作用是获得当前按键状态,并把按键状态清空!具体的处理代码如下:
//处理按键状态:
if((states & GameCanvas.LEFT_PRESSED) != 0){ //向左
}
if((states & GameCanvas. RIGHT_PRESSED) != 0){ //向右
}
在MIDP2.0的Game API处理中,这个方式使手机游戏开发重新回归到传统的模式中,也使游戏的处理更加灵活。
简单介绍了一下J2ME中低级用户界面的按键处理方式,并进行了一些比较,有不足之处请大家积极补充和指正!
Email:cqucyf@263.net
说明:未经允许,严禁转载!
分享到:
相关推荐
### J2ME三种低级用户界面事件处理技术深入解析 #### 覆盖keyPressed方法:基础事件处理 在J2ME(Java 2 Micro Edition)的低级用户界面编程中,事件处理是一项核心技能,尤其对于手机键盘事件的处理至关重要。...
综上所述,J2ME中高级界面和低级界面的切换是开发过程中一个关键的技巧,它涉及到界面设计、事件处理、内存管理和性能优化等多个方面。理解和掌握这些知识点对于创建功能丰富且运行流畅的J2ME应用程序至关重要。通过...
在J2ME(Java 2 Micro Edition)编程中,低级界面的字体处理是一个关键的环节,这直接影响到应用程序的视觉效果和用户体验。在J2ME中,我们不能像在高级用户界面那样自由选择各种字体,因为手机设备的资源限制,只能...
通过分析和学习这些示例代码,开发者可以深入理解J2ME的低级界面编程,以及如何在Eclipse环境中进行J2ME应用的开发。同时,贪吃蛇游戏的实现也是一个很好的实践机会,可以帮助开发者掌握游戏编程的基本原理和技巧。
┌第二章 高级用户界面设计 ┃2_1.信息提示Alert类 ┃2_2.文本界面程序设计 ┃2_3.Form界面程序设计 ┃2_4.列表界面程序设计 ┃2_5.Image类和图形列表提示框 ┃2_6.Form多种控件及跑马灯 ┃2_7.Form界面监听控件...
《J2ME低级API与事件处理:深入解析与示例》 J2ME(Java 2 Micro Edition)是Java平台的一个子集,主要用于嵌入式设备和移动设备的开发,如早期的智能手机和平板电脑。J2ME的低级API,也称为CLDC(Connected ...
在移动设备领域,Java 2 Micro Edition(J2ME)是一种广泛使用的开发平台,用于创建在小型设备上运行的应用程序,如手机、智能手表...通过研究这样的源码示例,可以加深对J2ME编程的理解,提高在实际项目中的应用能力。
WAP是一种专为移动设备设计的通信协议,通过结合多种数据处理技术,使开发者能够创建类似Web页面的应用。然而,WAP依赖于浏览器,使用如WML(Wireless Markup Language)这样的标记语言动态生成内容。相比之下,...
1. J2ME游戏开发人员:专注特定平台的游戏开发,需熟练掌握高级和低级用户界面、线程和网络编程。 2. J2ME应用开发人员:开发移动应用,如定位服务和移动商务,需精通高级用户界面、线程和网络编程。 3. J2ME游戏...
现代移动开发转向了基于Android和iOS等平台的技术,然而J2ME中的一些基本概念和原则,比如应用程序架构设计、用户界面开发、事件处理、网络通信和资源管理等,对移动应用开发者来说仍然适用。未来开发者需要继续跟进...
4. **事件处理**:J2ME使用KeyListener和CommandListener来处理用户输入。例如,通过监听键盘事件或命令按钮来控制游戏的交互。 5. **低级图形API**:如Graphics类提供的方法,如`drawRect()`, `drawImage()`, `...
J2ME,全称Java 2 Micro Edition,是Java平台的一个子集,专门用于嵌入式设备和移动设备的开发,如手机、智能家电等...通过深入研究这些源代码,你可以提升自己的J2ME编程技能,更好地适应移动和嵌入式领域的开发需求。
**精通J2ME无线编程** 是一本专注于Java Micro Edition(J2ME)技术在无线设备上应用开发的教程。J2ME是Java平台的一个子集,设计用于资源有限的嵌入式设备,如移动电话、PDA和智能家电。本教程适合初学者,通过深入...
【J2ME编程基础】 J2ME,全称Java 2 Micro Edition,是Java平台的一个子集,专门用于开发小型设备,如手机、嵌入式系统等。在手机端进行J2ME编程,你需要以下几个核心工具: 1. **文本编辑器**:用于编写Java源...
在Java 2 Micro Edition (J2ME)平台上开发移动应用时,我们经常需要创建用户界面(UI)以提供良好的用户体验。由于资源有限,J2ME提供了两种主要的UI框架:高级UI(MIDP CLDC)和低级UI(通常基于Graphics类)。本教程...
### 基于J2ME的手机编程 #### 引言 随着通信技术的迅猛发展与手机普及率的持续攀升,手机已经从最初的单一通话工具转变为集多种功能于一身的便携式智能设备。为了满足消费者对手机多功能化的需求,手机软件开发也...
MIDP包括用户界面组件(如Canvas和Form)、网络访问能力以及数据存储功能。MIDlet是MIDP中的应用程序单位,它由主类和可选的资源文件组成。 **J2ME编程基础** 在J2ME中,你需要学习如何使用MIDlet套件管理器来控制...
低级用户界面及事件处理** 除了MIDP提供的高级组件,开发者还可以使用Graphics类直接绘图,实现底层的UI控制。同时,深入理解低级事件处理有助于优化性能和提升用户体验。 **6. 数据存储** J2ME提供了RecordStore ...
通过对这些源码的学习,开发者不仅可以提升J2ME编程技能,还可以了解到手机游戏开发的基本流程和技巧,为未来的项目积累宝贵经验。同时,对于想要进入移动游戏开发领域的新人来说,这是一个极好的实践案例。