|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
手机用到的是用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();
该代码的感化是取得以后按键形态,并把按键形态清空!详细的处置代码以下:
//处置按键形态:
if((states&GameCanvas.LEFT_PRESSED)!=0){//向左
}
if((states&GameCanvas.RIGHT_PRESSED)!=0){//向右
}
在MIDP2.0的GameAPI处置中,这个体例使手机游戏开辟从头回回到传统的形式中,也使游戏的处置加倍天真。
主要缺点就是:速度比较慢,没有C和C++快 |
|