Android 游戏开发中的触摸与按键事件处理
1. 触摸事件基础
在 Android 游戏开发中,触摸事件的处理是关键的一部分。首先,触摸坐标是相对于视图的,而且由于视图通常不会填满整个屏幕,所以最大的 y 值会小于屏幕分辨率的高度。之后可以开启全屏模式,让标题栏和通知栏不影响游戏。
不过,旧版 Android 系统和第一代设备在处理触摸事件时存在一些问题:
- 触摸事件泛滥 :当手指触摸屏幕时,驱动程序会尽可能多地报告触摸事件,有些设备每秒能报告数百个。可以在 onTouch() 方法中添加 Thread.sleep(16) 调用,让处理这些事件的 UI 线程休眠 16 毫秒,这样每秒最多能得到 60 个事件,对于响应灵敏的游戏来说已经足够。
- 触摸屏幕消耗 CPU :即使在 onTouch() 方法中让线程休眠,系统内核仍需处理驱动程序报告的事件。在旧设备(如 Hero 或 G1)上,这可能会占用高达 50% 的 CPU 资源,导致主循环线程的处理能力大幅下降,帧率显著降低,甚至使游戏无法正常运行。第二代设备这个问题不太明显,通常可以忽略,但旧设备没有很好的解决办法。
2. 多点触摸事件处理
多点触摸 API 被添加到原本只处理单点触摸的 MotionEvent 类中,这在解析多点触摸事件时会造成很大的困惑。
2.1 处理方式与单点触摸的异同
处理多点触摸事件和单点触摸事件有相似之处,都要实现
超级会员免费看
订阅专栏 解锁全文
690

被折叠的 条评论
为什么被折叠?



