手机游戏中处理用户输入的方法

不管在手机游戏的故事情节和图形处理方面投入多少精力和时间,如果你没法让用户很好地玩游戏,这些也白搭。让玩家很好地玩游戏,这个概念包括为用户提供一个反应灵敏、构思成熟的控制系统,以便让他们能够很好地玩游戏。J2ME在处按键输入的传统方法在一般的MIDlet中工作的很好,但是对于游戏来说,其响应灵敏度就不够了。因此,GameCanvas类在getKeyState()方法中提供了一种更为高效的替代方法。
getKeyState ()方法用来在任何时候对手机按键的状态形成快照。这个方法并不会报告手机的所有按键,而只会报告那些可能应用到游戏中的按键。可以使用getKeyState()方法通过下面的按键常量来决定单个游戏按键的状态。
·UP_PRESSED——Up按键;
·DOWN_PRESSED——Down按键;              
·LEFT_PRESSED——Left按键;
·RIGHT_PRESSED——Right按键;
·FIRE_PRESSED——Fire按键;
·GAME_A_PRESSED——可选按A按键;
·GAME_B_PRESSED——可选按B按键;
·GAME_C_PRESSED——可选按C按键;
·GMAE_D_PRESSED——可选按D按键。
A BC,和D键都是可选的按键,在手机上可能有也可能没有,因此,不应该依赖这些按键来实现重要的游戏控制功能,主要还是使用上述4个按键。
getKeyPressed() 方法返回可以用来检测哪个按键被按下的一个整数值(如果哪个按键被按下的话)。为了检查一个具体的按键被按下,只要调用getKeyStates()方法并用一个预定的常量来匹配返回值:

int KeyState=getKeyPressed();
if((keyState & LEFT)!=0){
    
//向左移动;}else if((keyState & RIGHT)!=0){

//向右移动;} else if((keyState & UP)!=0){

//向上移动;} else if((keyState & DOWN)!=0){

//向下移动;} else if((keyState & FIRE)!=0){

//开火;}

这段代码在游戏循环(或动画循环)中,以便使按键状态在一个固定的时间间隔内都会被检测。如果一个按键从getKeyStates()上一次被调用的时候就被按下并释放,按键还是会报告为按下状态。这就保证了快速的按键动作不会被丢弃,即便是游戏循环运行的太慢而捕捉不到按键的实时状态。另外,getKeyState()方法并不会返回有实际意义的休息,除非游戏画布当前是可见的。如果游戏有多个屏幕,除非游戏画布被选择为当前屏幕,否则它是不会变为活动的。
转载至:http://gaochaojs.blog.51cto.com/812546/198980
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值