`
wo_deqing
  • 浏览: 60578 次
文章分类
社区版块
存档分类
最新评论

J2ME三种低级用户界面事件处理技术比较

 
阅读更多
在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开发.ppt

    第五章低级用户界面及事件处理--j2me开发.ppt

    J2ME低级用户界面,游戏引擎

    非官方详细的资源描述有机会获得我们的推荐,更有利于他人下载,赚取更多积分。

    J2ME实用教程.rar

    本书内容包括J2ME简介,J2ME开发环境的安装及配置,MIDP程序开发,高级用户界面及事件处理,低级用户界面及事件处理,手机游戏项目开发介绍,手机游戏开发及案例分析,数据存储,无线网络开发和移动银行实例等。...

    J2ME实用教程(有需要的可下载)

    第1章-J2ME简介 第2章-J2ME开发环境的安装及配置 ...第5章-低级用户界面及事件处理 第6章-手机游戏项目开发介绍 第7章-手机游戏开发 第8章-游戏案例分析 第9章-数 据 存 储 第10章-无线网络开发第 11章-移动银行实例

    J2ME实用教程-附源码

    本书内容包括J2ME简介,J2ME开发环境的安装及配置,MIDP程序开发,高级用户界面及事件处理,低级用户界面及事件处理,手机游戏项目开发介绍,手机游戏开发及案例分析,数据存储,无线网络开发和移动银行实例等。

    j2me讲义--从入门到精通

    第1章 走进J2ME移动开发世界 第2章 面向移动信息设备的 第3章 移动信息设备简表 第4章 搭建移动应用开发环境 第5章 MIDlet编程基础 第6章 MIDP 高级界面编程 第7章 低级用户界面编程

    J2ME移动设备程序设计分卷1

    连接设备与连接受限设备的配置和简表、MIDP编程基础、J2ME 应用开发环境与工具、MIDP高级用户界面设计、MIDP低级用户界面设计、MIDP游戏程序设计、MIDP 多媒体程序设计、MIDP数据管理程序设计、MIDP网络程序设计等,...

    JAVA基于J2ME的手机游戏开发(论文+源代码)

    目 录 第一章 绪论 1 ...2.5 用户界面(LCDUI 13 2.5.1 UI基础 13 2.5.2 高级UI 14 2.5.3 低级UI 15 第三章 手机游戏开发过程 16 3.1 贪吃蛇游戏的规则简介以及开发环境 16 3.1.1 贪吃蛇游戏的规则简介 16 3.

    tengge手机端j2me编程教程完整版

    ┌第二章 高级用户界面设计 ┃2_1.信息提示Alert类 ┃2_2.文本界面程序设计 ┃2_3.Form界面程序设计 ┃2_4.列表界面程序设计 ┃2_5.Image类和图形列表提示框 ┃2_6.Form多种控件及跑马灯 ┃2_7.Form界面监听控件...

    J2ME贪吃蛇游戏论文

    第五节 用户界面(LCDUI 13 一、 UI基础 14 二、 高级UI 14 三、低级UI 15 第三章 手机游戏开发过程 16 第一节 贪吃蛇游戏的规则简介以及开发环境 16 一、贪吃蛇游戏的规则简介 16 二、开发环境 16 第二节 详细设计 ...

    使用Canvas建立应用程序的欢迎界面

    使用低级用户界面技术制作j2me应用程序的欢迎界面的方法

    基于J2ME的手机游戏开发

    2.5 用户界面(LCDUI 2.5.1 UI基础 2.5.2 高级UI 2.5.3 低级UI 第三章 手机游戏开发过程 3.1 贪吃蛇游戏的规则简介以及开发环境 3.1.1 贪吃蛇游戏的规则简介 第四章 程序的调试与运行 4.1游戏的调试 22 4.2 ...

    JAVA基于J2ME的手机游戏开发吞吃蛇小游戏(论文+源代码)

    第一章 绪论 1 ...2.5 用户界面(LCDUI 13 2.5.1 UI基础 13 2.5.2 高级UI 14 2.5.3 低级UI 15 第三章 手机游戏开发过程 16 3.1 贪吃蛇游戏的规则简介以及开发环境 16 3.1.1 贪吃蛇游戏的规则简介 16 3.1.2 开

    j2me 很值得下在 .

    主要有高级AIP用户界面设计,低级AIP设计,记录管理,无线处理,安全技术,多媒体。。。

    j2me手机开发相关源代码

    3用户界面 4高级UI组件开发 5低级UI组件开发 6记录管理系统(RMS) 7异常处理 8多线程应用 9移动网络应用 10文件管理 11个人信息管理 12无线消息服务 13Push技术 14XMl应用 15多媒体开发 16游戏开发 17设计模式 18单元...

    javac#开发手机程序及移动应用

    ch04 图形处理及低级事件处理 ch05 多线程编程 ch06 I/O及网络编程 ch07 数据库RMS编程 ch08 浮点数编程 ch09 多媒体及GAME API编程 ch10 安全、加密及代码优化 ch11 扩展类库及供应商提供的API ch12 与...

Global site tag (gtag.js) - Google Analytics