动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息



本月文章推荐
.J2EE应用程序中SQL语句自动构造方.
.Java的各种架构优缺点分析和展望.
.使用Properties从配置文件中读取.
.TurbineHowTo之Service.
.时间显示控制四板斧.
.用java编写客户-服务器程序的若干.
.Java JFormattedTextField 组件的.
.Java语言基础二.
.Java中利用Reflection API优化代.
.为何不让SOA变得简单?.
.Spring Framework中的AOP编程之入.
.在Java中对标准流进行重定向.
.如何在JBOSS Server上发布EJB.
.编程基础:Java中的数据结构.
.printscreen读取位图转为jpeg格式.
.WebLogic的研究之开发、部署EJB(.
.Java技巧:使用Runtime.exec重定.
.Jacada发布EJB封装器.
.Struts模块化编程经典实战教程(一.
.Application and Applet.

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

发表日期:2008-1-5 |



  在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();
  该代码的作用是获得当前按键状态,并把按键状态清空!具体的处理代码如下:



上一篇:Eclipse 3.1中的Java泛型支持 人气:377
下一篇:JBuilder X 初体验 人气:319
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-5 360安全卫士 V4.2.0.1004
2008-7-5 PHPDug v2.0 多国语言版
2008-7-5 乘风电影程序 v3.69 (SQL)
2008-7-5 乘风电影程序 v3.69
2008-7-5 wfTextImage文字图像组件 v1.5
2008-7-5 ZY music! v1.1.0705
2008-7-5 FavShop网店系统 v1.0
2008-7-4 天空网络电影系统SKYUC v2.5.1 B
2008-7-4 Drupal v7.x-dev Build 080704
2008-7-5 AgileMessenger即时通讯工具 v1.
2008-7-5 GoodCalculator2.0版固件计算器
2008-7-5 RepoName源地址搜索工具 v1.21b
2008-7-5 AgileMessenger即时通讯工具 v1.
2008-7-5 TouchCopy多媒体管理软件 v3.13完
2008-7-5 VideosTone视频铃声 v1.1汉化破解
2008-7-5 TouchPad触摸板 v4.44破解版
2008-7-5 VideosTone破解补丁 v1.0
2008-7-5 Feeds GoogleReader客户端 v0.4.3


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報