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

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

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

[原创]cocos2d-x研习录-第三阶 特性之加速度传感器的更多相关文章

  1. [原创]cocos2d-x研习录-第三阶 特性之物理引擎

    游戏物理引擎是指在游戏中涉及物理现象的逻辑处理,它用于模拟现实世界的各种物理规律(如赛车碰撞.子弹飞行.物体掉落等),让玩家能够在游戏中有真实的体验. Cocos2D-x中支持Box2D和Chipmu ...

  2. [原创]cocos2d-x研习录-第三阶 特性之粒子系统

    我想接触过游戏引擎的同学,对粒子系统应该不会陌生.它用于解决由大量按一定规则运动(变化)的微小物质在计算机上的生成和显示问题.粒子系统在游戏中有着非常广泛的应用,可以模拟很多现象,如火花.爆炸.烟雾. ...

  3. [原创]cocos2d-x研习录-第三阶 特性之瓦片地图集

    由于一张大的世界地图或背景图片往往可以由屈指可数的几种地形来表示,每种地形对应于一张小的图片,我们称这些小的地形图片为瓦片.把这些瓦片拼接在一起,组合成一个完整的地图,这就是瓦片地图集的基本原理. C ...

  4. [原创]cocos2d-x研习录-第三阶 特性之调度器

    在游戏中,经常会周期执行一些检测.操作或更新一些数据等,我们称之为调度.Cocos2D-x中将调度封装为类CCScheduler,方便在游戏开发中使用.我们一起来学习一下,CCScheduler具有哪 ...

  5. [原创]cocos2d-x研习录-第三阶 特性之动作

    在前面的Cocos2D-x的概念类中,我们了解到节点类CCNode.导演类CCDirector.场景类CCScene.布景层类CCLayer和精灵类CCSprite等,这些类都是构成游戏画面的基本元素 ...

  6. [原创]cocos2d-x研习录-第三阶 特性之按键与虚拟键盘

    Cocos2D-x引擎支持按键事件,它能检测设备的键盘输入并处理相应的事件.而基于不同操作系统的移动设备,可供用户操作的按键数量和功能都存在差异.   Cocos2D-x使用CCKeypadDeleg ...

  7. [原创]cocos2d-x研习录-第三阶 特性之触屏

    游戏跟视频最大的区别就是互动,而手游(基于智能手机)主要靠触摸屏幕.重力传感和虚拟键盘等方式实现互动.这里主要记录Cocos2D-x对玩家触屏操作的处理. 在Cocos2D-x中触屏分为单点触屏和多点 ...

  8. [原创]cocos2d-x研习录-第三阶 多分辨率适配器

    在移动终端(智能手机)平台下开发游戏一般都会涉及到屏幕多分辨率适配问题,原因是手机款式多种多样,不同的款式存在有不同的尺寸,即使尺寸相同又可能存在不同的分辨率. 手机屏幕尺寸:指手机屏幕对角线长度. ...

  9. [原创]cocos2d-x研习录-第三阶 背景音乐和音效

    在游戏中,音效是一个不可或缺的部分,它可以为我们的游戏增加效果.音效在游戏中一般分为长时间的背景音乐和短促的特效音乐.Cocos2D-x支持多种常见音乐格式(mp3.wav等). Cocos2D-x提 ...

随机推荐

  1. VMware虚拟机无法ping通/分配虚拟IP/远程访问的问题的解决方案:

    最近老板要写俩web系统,没有自己的服务器,没办法,只好先借用下学院的服务器做下测试调试.那好,问题来了~ 学院的服务器不是我一个人在维护,经常有其他人登进登出(!!!担心文件丢失啊!!!),硬伤!! ...

  2. c/c++面试题(8)memcopy/memmove/atoi/itoa

    1.memcpy函数的原型: void* memcpy(void* dest,cosnt void* src,size_t n); 返回值:返回dest; 功能:从源内存地址src拷贝n个字节到des ...

  3. STM32 Cube固件库编程之新建工程

    Cube固件库是ST现在主推的固件库,并且在它的官网已经找不到原来的标准库可供下载.Cube固件库的构架图如下 这种新式构架可以有效的加快软件工程师的工程进度. 新建一个工程项目主要包括以下的步骤: ...

  4. C语言实现栈

    #include <stdio.h> #include <stdlib.h> #include <stdbool.h> typedef struct stack_t ...

  5. 第一章:Android系统移植与驱动开发概述

    Android是基于Linux内核的,与Linux内核没有太大的区别,只是增加了一些自己独有的驱动,随着Android发布版本的不断升级,他所使用的Linux内核也在不断升级,以适应新的安卓版本,为他 ...

  6. What is the DD in java web application

    http://docs.oracle.com/cd/E13222_01/wls/docs70/webapp/webappdeployment.html

  7. C++ mem_fun 和 mem_fun_ref 的用法

    假设我们有以下的一个类: 另外有一个包含 class A 对象的数组: vector<A> vec; 如何对每一个类的对象调用成员函数print. 做法1: 利用下标 for(int i= ...

  8. Codeforces 570C 贪心

    题目:http://codeforces.com/contest/570/problem/C 题意:给你一个字符串,由‘.’和小写字母组成.把两个相邻的‘.’替换成一个‘.’,算一次变换.现在给你一些 ...

  9. 【转载】RMAN备份保留策略设置相关命令

    转自 http://blog.sina.com.cn/s/blog_7c5a82970101g4s7.html 策略有两种,一种是基于恢复窗口策略的,一种是基于冗余策略的. 基于恢复窗口策略: 定义的 ...

  10. myeclipse中的weblogic 服务未正常关闭问题解决。

    myeclipse中的weblogic 服务若未正常关闭,直接启动服务会出现weblogic服务被锁. 正确操作:应该将相应的服务关掉然后重启 打开任务管理器,进入进程找到javaw,将进程结束.然后 ...