智能手机的游戏与应用中,也经常会用到加速传感器事件来丰富用户的体验,比如飞翔的企鹅(英文AirPenguin)游戏就是通过加速度传感器来控制角色的移动和跳跃方向。下面学习Cocos2D-x中如何使用加速度传感器事件。
Cocos2D-x中使用加速度传感器代理类CCAccelerometerDelegate提供的接口方法来接受加速度传感器的数值变化,类继承关系如下图:
布景层类CCLayer和其子类继承自CCAccelerometerDelegate类,因此它们支持加速度传感器。
CCAccelerometerDelegate的定义很简单,只有一个函数,如下:class CC_DLL CCAccelerometerDelegate
{
public://加速度传感器数据变化传入数据
virtual void didAccelerate(CCAcceleration* pAccelerationValue) {CC_UNUSED_PARAM(pAccelerationValue);}
};
结构体CCAcceleration存储了加速度传感器的数据,包括时间戳和坐标轴上的加速度值,这个值以重力加速度为单位。因此,要获得相应坐标轴加速度的值时,需要乘上重力加速度g(9.81)。CCAcceleration定义如下:typedef struct
{
double x; //x轴分数据(以重力加速度为单位)
double y; //y轴分数据(以重力加速度为单位)
double z; //z轴分数据(以重力加速度为单位)double timestamp;//时间戳
} CCAcceleration;下面介绍开发时对加速度传感器的使用:1)自定义类继承自CCLayer;2)自定义类初始化init方法中调用setAccelerometerEnabled(true)允许加速度事件可以被捕获。3)自定义类重写didAccelerate(CCAcceleration* pAccelerationValue)方法,获取加速度的值。4)自定义类根据加速度的值,完成相关逻辑处理。加速度传感器就介绍完了,自己可以试着写一个简单的使用加速度传感器程序。-------------------------------------------------------------------------------------------------------------------注:本人在本博客的原创文章采用创作共用版权协议(http://creativecommons.org/licenses/by-nc-sa/2.5/cn/), 要求署名、非商业用途和保持一致。要求署名包含注明我的网名及文章来源(我的博客地址:http://www.cnblogs.com/binbingg)。