[原创]cocos2d-x研习录-第三阶 特性之加速度传感器

时间:2023-03-09 06:43:07
[原创]cocos2d-x研习录-第三阶 特性之加速度传感器

智能手机的游戏与应用中,也经常会用到加速传感器事件来丰富用户的体验,比如飞翔的企鹅(英文AirPenguin)游戏就是通过加速度传感器来控制角色的移动和跳跃方向。下面学习Cocos2D-x中如何使用加速度传感器事件。

Cocos2D-x中使用加速度传感器代理类CCAccelerometerDelegate提供的接口方法来接受加速度传感器的数值变化,类继承关系如下图:

[原创]cocos2d-x研习录-第三阶 特性之加速度传感器

布景层类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)。