Cocos2d-x   发布时间:2022-05-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了cocos2d-x 3.0 事件分发机制 —加速计事件监听大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

加速计事件监听机制

在上一篇中介绍了cocos2d-x中的触摸事件机制,这篇来介绍下游戏中也经常用到的加速计事件,这些都是游戏中的经常要用到的。

移动设备上一个很重要的输入源是设备的方向,大多数设备都配备了加速计,用于测量设备静止或匀速运动时所受到的重力方向。

重力感应来自移动设备的加速计,通常支持X、Y和Z三个方向的加速度感应,又称为三向加速计。实际应用中,可以根据三个方向的力度大小来计算手机倾斜的角度和方向。

3.0机制中,我们只需要创建一个加速计监听器EventListenerAcceleration,实现响应的回调函数,在回调函数中实现相应的游戏逻辑即可,最后把创建的监听器注册到事件分发器_eventDispatcher中即可。

EventListenerAccerlation的静态create方法中有个Accerlation的参数,这个Accerlation是一个类,包含了加速计获得的三个方向的加速度,代码如下:

  1. classAcceleration
  2. {
  3. public:
  4. doublex;
  5. doubley;
  6. doublez;
  7. doubletimestamp;
  8. Acceleration():x(0),y(0),z(0),timestamp(0){}
  9. };
该类中每个方向的加速度大小都为一个重力加速度大小。

使用加速度计事件之前,需要先开启硬件设备,逗比的我在用这个之前,没注意到这点,我说为什么我都弄好了,跑出来的效果不是我想象的那样呢,最后发现没有开启硬件设备,有时小小的问题都有可能困扰你半天,到最后你发现居然是TMD这个错误,感觉自己瞬间就要崩溃的节奏。

开启硬件设备的语句:

copy

    Device::setAccelerometerEnabled(true);
创建监听器,创建回调函数,在创建回调函数时,可以用lambda表达式来创建匿名函数,也可以绑定已有的函数。

下面来看一下一个完整的步骤代码,用的是匿名函数:

copy

    //重力感应注册
  1. Device::setAccelerometerEnabled(true);//开启硬件设备
  2. autolistener=EventListenerAcceleration::create([=](Acceleration*acc,Event*event){
  3. autoptNow=ball->getPosition();//获取精灵球此刻的位置
  4. if(ptNow.x<ball->getContentSize().width/2){
  5. ball->setPositionX(VisibleRect::right().X);//超出左边界时设为从右边界出来
  6. }
  7. if(ptNow.x>VisibleRect::right().x-ball->getContentSize().width/2){
  8. ball->setPositionX(VisibleRect::left().X);
  9. }
  10. ball->getPhysicsBody()->setVelocity(Vect((acc->X)*2600.0f,ball->getPhysicsBody()->getVelocity().y));//获取精灵球的物理属性并根据加速度的大小acc->x设置X方向的速度,Y方向速度不变
  11. });
  12. _eventDispatcher->addEventListenerWithSceneGraphpriority(listener,ball);//注册监听器


加速度计机制和触摸机制都是手游中经常要用到的东西,熟练掌握这些知识可以在开发中大大提升效率,同时也可以让代码看起来更清晰。

好了,这篇介绍了加速度计监听器事件的机制和实现方法,下一篇介绍另一个游戏中必不可少的机制,游戏中的物理碰撞机制以及碰撞检测等。

大佬总结

以上是大佬教程为你收集整理的cocos2d-x 3.0 事件分发机制 —加速计事件监听全部内容,希望文章能够帮你解决cocos2d-x 3.0 事件分发机制 —加速计事件监听所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:33.0cocoscocos2ddx事件分发加速机制监听
猜你在找的Cocos2d-x相关文章
其他相关热搜词更多
phpJavaPython程序员load如何string使用参数jquery开发安装listlinuxiosandroid工具javascriptcap