cocos2d-x 3.0 事件分发机制 —加速计事件监听
来源:互联网 发布:linux配置yum软件仓库 编辑:程序博客网 时间:2024/04/27 20:55
加速计事件监听机制
在上一篇中介绍了cocos2d-x中的触摸事件机制,这篇来介绍下游戏中也经常用到的加速计事件,这些都是游戏中的经常要用到的。
移动设备上一个很重要的输入源是设备的方向,大多数设备都配备了加速计,用于测量设备静止或匀速运动时所受到的重力方向。
重力感应来自移动设备的加速计,通常支持X、Y和Z三个方向的加速度感应,又称为三向加速计。实际应用中,可以根据三个方向的力度大小来计算手机倾斜的角度和方向。
3.0机制中,我们只需要创建一个加速计监听器EventListenerAcceleration,实现响应的回调函数,在回调函数中实现相应的游戏逻辑即可,最后把创建的监听器注册到事件分发器_eventDispatcher中即可。
EventListenerAccerlation的静态create方法中有个Accerlation的参数,这个Accerlation是一个类,包含了加速计获得的三个方向的加速度,代码如下:
- class Acceleration
- {
- public:
- double x;
- double y;
- double z;
- double timestamp;
- Acceleration(): x(0), y(0), z(0), timestamp(0) {}
- };
使用加速度计事件之前,需要先开启硬件设备,逗比的我在用这个之前,没注意到这点,我说为什么我都弄好了,跑出来的效果不是我想象的那样呢,最后发现没有开启硬件设备,有时小小的问题都有可能困扰你半天,到最后你发现居然是TMD这个错误,感觉自己瞬间就要崩溃的节奏。
开启硬件设备的语句:
- Device::setAccelerometerEnabled(true);
下面来看一下一个完整的步骤代码,用的是匿名函数:
- //重力感应注册
- Device::setAccelerometerEnabled(true);//开启硬件设备
- auto listener = EventListenerAcceleration::create([=](Acceleration* acc, Event* event){
- auto ptNow = ball->getPosition();//获取精灵球此刻的位置
- if(ptNow.x < ball->getContentSize().width/2) {
- ball->setPositionX(VisibleRect::right().x);//超出左边界时设为从右边界出来
- }
- if(ptNow.x > VisibleRect::right().x - ball->getContentSize().width/2) {
- ball->setPositionX(VisibleRect::left().x);
- }
- ball->getPhysicsBody()->setVelocity(Vect((acc->x) *2600.0f ,ball->getPhysicsBody()->getVelocity().y));//获取精灵球的物理属性并根据加速度的大小acc->x设置X方向的速度,Y方向速度不变
- });
- _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, ball);//注册监听器
好了,这篇介绍了加速度计监听器事件的机制和实现方法,下一篇介绍另一个游戏中必不可少的机制,游戏中的物理碰撞机制以及碰撞检测等。
0 0
- cocos2d-x 3.0 事件分发机制 —加速计事件监听
- cocos2d-x 事件分发机制 ——加速计事件监听
- cocos2d-x 事件分发机制 ——加速计事件监听
- cocos2d-x 3.0 事件分发机制 —触摸事件监听
- cocos2d-x 事件分发机制 ——触摸事件监听
- cocos2d-x 事件分发机制 ——触摸事件监听
- cocos2d-x 事件分发机制 ——触摸事件监听
- cocos2d-x 3.0 事件分发机制
- Cocos2d-x 事件分发机制
- Cocos2d-x 3.x 事件分发机制
- Cocos2d-x 3.X 事件分发机制
- Cocos2d-x 3.X 事件分发机制
- Cocos2d-x 3.X 事件分发机制
- Cocos2d-x 3.X 事件分发机制
- Cocos2d-x 3.X 事件分发机制
- cocos2d-x-3.3-012-事件分发机制
- cocos2d-x中的事件分发机制
- Cocos2d-x事件分发机制学习笔记
- 斯坦福大学机器学习——特征选择(Feature selection)
- weblogic在myeclipse中的配置
- sharedPreferences
- HighCharts图表开发
- MyEclipse配置Tomcat 6
- cocos2d-x 3.0 事件分发机制 —加速计事件监听
- wayland 介绍
- 组合模式
- zookeeper原理【转】
- POJ 3267 The Cow Lexicon( DP~去掉最少字符)
- ZOJ 3741 Eternal Reality [dp]
- cmake 链接动态链接库
- Hibernate参数属性配置
- 产品经理要懂多少技术?