完美处理java手机游戏的按键

      玩过市面上一些java手机游戏,发现很多游戏的按键处理有问题,不是不灵敏,就是不支持多键同时按下.作为一个骨灰级的游戏职业玩家,我实在不能忍受这种不人性化的游戏设计,所以小弟分析了一下具体原因:

 

1) 如果是用MIDP1.0来处理连续的按键消息:

按照要求,应该利用3个函数keyPressed(int keycode), keyReleased(int keycode), keyRepeated(int keycode)

然后去设置一个boolean的标志位,就可以实现连续按键.很多网上的文章也是这样去写的,大家可以去找找,但是这样其实有一个很严重的问题,

就是按键不灵敏,特别才按下的时候,反应很慢.为什么呢?

因为这是MIDP1.0本身的设计缺陷造成的.在MIDP1.0中,游戏的按键响应和游戏的绘制分别由系统线程和游戏线程来处理,经常会出现按键响应不及时的情况,原来是因为线程不同造成的,知道原因解决办法也容易,就是把keyRepeated(int keycode)里面的内容写到游戏绘制的线程里面去,彻底放弃不用keyRepeated(int keycode)这个函数!!!

经测试,问题解决,按键响应很流畅,也支持2个键同时按下,

 

2) 如果用MIDP2.0来做

2.0其实已经把按键和游戏绘制做到一个线程里面了,所以按键非常灵敏.如果要完美地处理多键同时按下,就需要自己写比较复杂的按键逻辑,

如果不需要很完美,就用几个if()语句并列就好,效果也不错.

不过WTK2.5的模拟器在MIDP2.0下会有按键BUG,有时候按下就松不了,必须再按一次才可以松开,建议MIDP2.0下换WTK2.3模拟器

 

 

综上所述,按键问题主要有2个原因引起.

在MIDP1.0下,一是没有用标志位,实现不了连续按键,二是用了标志位,实现了连续按键,但是却不灵敏,因为线程的原因.

解决办法就是设置标志位,并且把应该写在keyRepeated(int keycode)下的内容全部转移到游戏绘制线程里面去.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值