Cocos2d-x学习笔记(二十五)之 加速度传感器事件
智能手机的游戏与应用中,也经常会用到加速度传感器事件来丰富用户的操作,比如赛车游戏中摇动手机控制前进方向、动作过关游戏中通过加速度传感器来控制角色的移动和跳跃方向等。Cocos2D-x中使用加速度传感器代理CCAccelerometerDelegate提供的方法来接收加速度传感器的数值变化,继承关系如下:
CCLayer-->CCAccelerometerDelegate。
布景层类CCLayer和其子类继承自CCAccelerometerDelegate类,因此布景层类和其子类可以使用获得加速度传感器的方法。
CCAccelerometerDelegate类的主要成员函数:
didAccelerate:加速度传感器数据变化传入数据。
didAccelerate函数传入CCAcceleration结构体,其数据如下:
x:x轴分数据(以重力加速度为单位)。
y:y轴分数据(以重力加速度为单位)。
z:z轴分数据(以重力加速度为单位)。
timestamp:时间戳。
CCAcceleration结构体存储了加速度传感器的数据,包括时间戳和坐标轴上的加速度值,这个值以重力加速度为单位,因此,要获得相应坐标轴加速度的值时,需要乘上重力加速度g。
使用示例如下:
1 //要在CCLayer中获得加速度传感器事件的数据,首先要在初始化函数(onEnter)中加入允许接收加速度传感器事件的函数。
2 setAccelerometerEnabled( true );
3
4 //然后重写didAccelerate函数。在didAccelerate函数中获得CCAcceleration结构体,获得x轴和y轴的以重力加速度为单位的加速度值,分别乘以重力加速度值获得相应的加速度。
5 void AccelerometerTest::didAccelerate( CCAcceleration* pAccelerationValue )
6 {
7 }