Cocos2D-X开发学习笔记1:加速度传感器

来源:互联网 发布:淘宝女装2017夏装新款 编辑:程序博客网 时间:2024/05/17 02:37

最近报名了微软创新杯,正好在实战中学习Cocos2D-X,应该会进步更快,因此转为记录开发学习笔记。初步打算做个运动软件,需要用到加速度传感器,因此首先学习一下加速度传感器的使用。

首先来看一下原理。加速度传感器可以获取如图x,y,z三个方向的加速度。手机静止时受到重力,可以确定合力方向向下。当手机被移动时,可以根据手机静止时的状态和各方向的加速度变化来确认各个方向。
这里写图片描述

Cocos2D-X中支持加速度传感器,将三个轴上的加速度存在acc->x,acc->y,acc->z中。

下面是一个示例:

bool HelloWorld::init(){    //////////////////////////////    // 1. super init first    if (!Layer::init())    {        return false;    }    Size visibleSize = Director::getInstance()->getVisibleSize();    Vec2 origin = Director::getInstance()->getVisibleOrigin();    screenWidth = visibleSize.width;    screenHeight = visibleSize.height;    scale = 1.0f;    label1 = Label::create("0,0,0","Arial",70);    label1->setPosition(screenWidth / 2, screenHeight / 2);    this->addChild(label1);    Device::setAccelerometerEnabled(true);    auto listener = EventListenerAcceleration::create(CC_CALLBACK_2(HelloWorld::onAcceleration, this)); //CC_CALLBACK的作用是让_target_对象用_selector_函数时绑定第0/1/2/3个参数后面参数的值    _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);     return true;}void HelloWorld::onAcceleration(Acceleration* acc, Event* event){    label1->setString(String::createWithFormat("%.2f,%.2f,%.2f", acc->x, acc->y, acc->z)->getCString());}

通过Device::setAccelerometerEnabled(true);打开加速度传感器,然后创建了监听器listener,让它被触发时调用onAcceleration,最后将监听器和场景绑定,这样就可以使用加速度传感器了,通过定义onAcceleration方法来实现相关的操作。
这里的操作是获取三个轴上的加速度并显示,效果图如下:
这里写图片描述

可见加速度传感器的使用还是很简单的。我们可以通过加速度传感器做很多东西,比如计步器、游戏(尤其是赛车游戏)中的控制、转屏等功能,还是很实用的。

0 0