分享

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

 wusiqi111 2015-04-22
完美处理java手机游戏的按键 分类: Java 2009-08-12 11:24 2012人阅读 评论(2) 收藏 举报
手机游戏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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多