14、Android 游戏开发中的触摸与按键事件处理

Android 游戏开发中的触摸与按键事件处理

1. 触摸事件基础

在 Android 游戏开发中,触摸事件的处理是关键的一部分。首先,触摸坐标是相对于视图的,而且由于视图通常不会填满整个屏幕,所以最大的 y 值会小于屏幕分辨率的高度。之后可以开启全屏模式,让标题栏和通知栏不影响游戏。

不过,旧版 Android 系统和第一代设备在处理触摸事件时存在一些问题:
- 触摸事件泛滥 :当手指触摸屏幕时,驱动程序会尽可能多地报告触摸事件,有些设备每秒能报告数百个。可以在 onTouch() 方法中添加 Thread.sleep(16) 调用,让处理这些事件的 UI 线程休眠 16 毫秒,这样每秒最多能得到 60 个事件,对于响应灵敏的游戏来说已经足够。
- 触摸屏幕消耗 CPU :即使在 onTouch() 方法中让线程休眠,系统内核仍需处理驱动程序报告的事件。在旧设备(如 Hero 或 G1)上,这可能会占用高达 50% 的 CPU 资源,导致主循环线程的处理能力大幅下降,帧率显著降低,甚至使游戏无法正常运行。第二代设备这个问题不太明显,通常可以忽略,但旧设备没有很好的解决办法。

2. 多点触摸事件处理

多点触摸 API 被添加到原本只处理单点触摸的 MotionEvent 类中,这在解析多点触摸事件时会造成很大的困惑。

2.1 处理方式与单点触摸的异同

处理多点触摸事件和单点触摸事件有相似之处,都要实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值