在J2ME的低级用户界面编程中,进行事件处理是经常使用到的技术之一,因为处理手机键盘上的按键事件是最常使用到的一种,所以就以此为中心,介绍一下实际使用过程中三种处理方式进行说明:
1、 覆盖keyPressed方法
在继承了Canvas的界面中,如果需要进行按键的处理,我们只需要在该类中覆盖Canvas类里面的这个方法,当手机按键被按下时,系统会自动调用该方法,并把被按下的按键的键值(keyCode)作为参数传递进来。所以如果需要处理按键事件,只需要在该方法内部检测按下的按键的键值就可以了。
在手机键盘上,可以简单的分为功能键区域和数字键区域,功能键指手机上的左右软键,中间的导航键以及接听电话和挂机键等,数字键区域指手机键盘上的0-9数字键以及*号和#号键。其中功能键的个数以及键值,不同的手机区别很大,而数字键的区域的按键个数,以及按键的键值都是一样的。
检测键值有如下两种方法:
a) 直接使用keyCode值
直接使用keyCode值的代码有如下两种,分别是:
if(keyCode==52){
//处理代码
} |
或者:
if(keyCode==Canvas.KEY_NUM4){
//处理代码
} |
以上是使用按键处理中的两种代码书写风格,建议实际使用过程中使用第二种,这样代码容易阅读。 而在实际的游戏开发过程,除了一些特殊的功能键,例如手机上的左右软键,很少使用这种方式进行编写,而是采用下面的方式进行处理。
b) 使用gameAction(游戏动作)
gameAction是一种将手机键盘映射成为游戏动作的机制,通过这种机制,可以使不同手机上的按键都能转换为类似或者是相同的游戏动作,当然这个工作是由每个手机厂商实现的。
实际使用中的代码如下:
//将keyCode转换为游戏动作
intaction=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){
caseCanvas.LEFT://向左
//处理代码
break;
caseCanvasRIGHT://向右
break;
caseCanvas.UP://向上
break;
……
} |
这个就是MIDP1.0中最常使用的按键处理方式。但是无论这种方式如何的优越,它还是无法摆脱keyPressed方法的束缚。
这样就将游戏编程中的三种逻辑:延迟、响应用户操作、重新绘制,隔离了开来,分别在用户线程和系统线程中进行。
为了解决这个不足,MIDP2.0在GameCanvas内部引入了一种新的事件处理方式按键状态(keyStates)机制。
2、 使用keyStates
按键状态指系统通过一个变量来记录手机键盘上每个和游戏动作有关的按键,如果该键按下则设置对应的位(bit)为1,否则为0,然后可以通过位运算获得哪个按键被按下。
注意:按键状态只能在MIDP2.0的GameCanvas子类中里面使用,而且只能处理和游戏相关的按键。如果支持该处理方式处理游戏按键的话,将在keyPressed方法中无法接收到和游戏相关的按键,其他按键还可以正常接收响应。
如果要使用该功能,首先要在GameCanvas子类的构造方法中,让该界面支持该操作,这个步骤可以使用GameCanvas的构造方法来实现,代码如下:
//使该界面支持按键状态处理
super(true); |
这样该界面就可以进行按键状态处理。和前面的按键处理不同,该种处理方式可以脱离keyPressed方法的限制,也就是说可以写在任意的处理方法内部,只需要在线程中调用即可。
使用该处理方式,无论线程中的延迟多么长,系统都可以保持该按键的状态。这个好处是其他处理方式无法做到的。
首先,获得游戏按键状态,代码如下:
//获得游戏的按键状态
intstates=getKeyStates();
该代码的作用是获得当前按键状态,并把按键状态清空!具体的处理代码如下:
//获得游戏的按键状态
intstates=getKeyStates(); |
在MIDP2.0的Game API处理中,这个方式使手机游戏开发重新回归到传统的模式中,也使游戏的处理更加灵活。
分享到:
相关推荐
【低级用户界面与事件处理】在J2ME开发中,低级用户界面是指通过基本的API进行定制化的界面设计,通常涉及到Canvas类的使用。Canvas是Displayable的一个子类,提供了一种直接操作设备屏幕像素的能力,适用于需要精细...
综上所述,J2ME中高级界面和低级界面的切换是开发过程中一个关键的技巧,它涉及到界面设计、事件处理、内存管理和性能优化等多个方面。理解和掌握这些知识点对于创建功能丰富且运行流畅的J2ME应用程序至关重要。通过...
本主题聚焦于J2ME中的一个特定技术点:在低级界面上输入数字。这个话题对于那些想要深入理解J2ME应用程序开发,特别是涉及用户交互的开发者来说至关重要。 J2ME通常分为两部分:KVM(K Virtual Machine)和MIDP...
**J2ME低级界面全示例Eclipse** Java Micro Edition (J2ME) 是Java平台的一个子集,主要用于嵌入式设备和移动设备的开发,如手机、智能手表等。J2ME提供了多种框架来构建应用程序,其中的低级界面(Low-Level User ...
《J2ME低级API与事件处理:深入解析与示例》 J2ME(Java 2 Micro Edition)是Java平台的一个子集,主要用于嵌入式设备和移动设备的开发,如早期的智能手机和平板电脑。J2ME的低级API,也称为CLDC(Connected ...
【Java低级用户界面及事件处理】主要涉及的是在Java ME (Micro Edition)环境中,针对MIDP(Mobile Information Device Profile)平台进行低级UI设计和事件管理的技术。这一部分的内容通常用于创建自定义的界面组件,...
在J2ME中,我们不能像在高级用户界面那样自由选择各种字体,因为手机设备的资源限制,只能使用手机支持的默认字体。`Font`类是用于处理字体的核心类,它提供了创建和管理字体的方法。 创建`Font`对象时,主要使用`...
总的来说,J2ME低级界面的汉字输入是一个相对复杂的过程,需要对J2ME的事件处理、字库管理和用户界面设计有深入理解。通过掌握这些技术,开发者可以创造出更加本地化且具有高度定制性的移动应用。
标题中的“j2me低级界面字符串自动换行代码包”指的是在Java 2 Micro Edition (J2ME)平台上,针对图形用户界面(GUI)开发的一种解决方案,它涉及到字符串处理和显示,特别是在有限的屏幕空间内自动进行换行。...
1. J2ME游戏开发人员:专注特定平台的游戏开发,需熟练掌握高级和低级用户界面、线程和网络编程。 2. J2ME应用开发人员:开发移动应用,如定位服务和移动商务,需精通高级用户界面、线程和网络编程。 3. J2ME游戏...
在 J2ME 中,用户界面 (UI) 的创建对于构建交互式的移动应用程序至关重要。本篇将深入探讨 J2ME UI 的低级界面开发实例,包括图片加载和按钮选择等功能。 首先,我们要理解 J2ME UI 开发的基础组件,主要由 MIDP ...
非官方详细的资源描述有机会获得我们的推荐,更有利于他人下载,赚取更多积分。
九宫图,也被称为九宫格,是一种常见的布局方式,常用于游戏、菜单系统或者简单的用户界面设计。在手机平台上,J2ME提供了基础的图形绘制功能,使得开发者能够构建丰富的交互式应用。 首先,我们要理解J2ME中的...
MIDP的用户界面库分为低级和高级API,两者都有各自的事件处理机制。高级API适用于重视移植性的应用,它通过高度抽象的组件来简化开发,但牺牲了对组件外观的精细控制。相反,低级API允许更精细的显示控制,但可能...
本教程主要关注J2ME中的低级用户界面和事件处理,这对于创建自定义屏幕和组件,尤其是游戏开发至关重要。 **低级用户界面——Canvas** Canvas是J2ME中用于构建低级用户界面的基础类,它继承自Displayable,提供对...
在MIDP中,Canvas是基础的绘图组件,可以用来创建自定义的用户界面。 在J2ME中,低级画布(Custom Canvas)是继承自`javax.microedition.lcdui.Canvas`类的自定义类。开发者通常会重写`paint()`方法来实现自己的...
在Java 2 Micro Edition (J2ME)平台上开发移动应用时,我们经常需要创建用户界面(UI)以提供良好的用户体验。由于资源有限,J2ME提供了两种主要的UI框架:高级UI(MIDP CLDC)和低级UI(通常基于Graphics类)。本教程...
1. **低级界面实现**:在J2ME中,开发人员通常使用MIDP API来创建用户界面。MIDP提供了基础的UI组件,如Canvas和Form,它们是低级别的界面元素。Canvas允许自定义绘图,而Form则可以展示文本和用户输入。 2. **界面...
1. **用户界面**:使用J2ME的LWUIT( Lightweight UI Toolkit)或MIDP的Canvas类创建用户界面。LWUIT提供了一组丰富的组件,可以创建更具吸引力的图形用户界面。 2. **网络编程**:使用J2ME的`javax.microedition....