//GameScene.h
#include "cocos2d.h"
USING_NS_CC;
class GameScene : public cocos2d::Layer
{
public:
static cocos2d::Scene* createScene();
virtual bool init();
void menuCallback(Ref* pSender);
//重写重力感应函数
virtual void didAccelerate(Acceleration* acc, Event* event);
CREATE_FUNC(GameScene);
private: //注意不能用auto关键字
Size size;
Sprite *sprite;
};
//GameScene.cpp
// Created by Jacedy on 14-8-11.
#include "GameScene.h"
USING_NS_CC;
cocos2d::Scene* GameScene::createScene()
{
auto scene = Scene::create(); //创建一个场景
auto layer = GameScene::create(); //创建一个图层
scene->addChild(layer);
return scene;
}
//初始化当前的图层
bool GameScene::init()
{
if(!Layer::init()) //初始化父类
return false;
//获取屏幕大小
size = Director::getInstance()->getVisibleSize();
//auto size = Director::getInstance()->getWinSize();
//添加一个图片精灵
sprite = Sprite::create("OnePiece_1.png");
sprite->setPosition(Vec2(size.width/2, size.height/2));
sprite->setTag(12);
this->addChild(sprite);
//开启重力感应
Device::setAccelerometerEnabled(true);
//创建事件监听对象
auto listener = EventListenerAcceleration::create(CC_CALLBACK_2(GameScene::didAccelerate, this));
//在事件监听器中注册
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
return true;
}
void GameScene::didAccelerate(Acceleration* acc, Event* event)
{
//使精灵随重力感应移动
auto sprite = this->getChildByTag(12); //通过标签获取精灵
auto pos = sprite->getPosition();
pos.x += acc->x;
pos.y += acc->y;
//pos.y += acc->y * 10; //调整敏感度
sprite->setPosition(pos);
}
void GameScene::menuCallback(Ref* pSender)
{
}
Cocos2d-x3.2 重力感应,布布扣,bubuko.com
原文地址:http://my.oschina.net/Jacedy/blog/301866