今天克服了一个问题,我觉得非常酷 哈哈。



今天得到解决cocos2d-x 3.0 呼叫重力加速器问题,上网查了很多资料 发现是不够,不解决这个问题,我不知道如果我使用3.0 这一问题的版本号,但是,这也有一些在线教程3.0 版本号啊。是beta有那么大区别么?坑爹啊,



就说这个重写的方法吧:网上搜索的到好多都是重写父类的 didAccelerate(CCAcceleration* pAccelerationValue);方法,可是我用的3.0 根本就没有了这种方法,搜索的3.0 还是有说这个,蛋疼。



最后在看官方的testCpp样例的时候发现了如今调用重力加速器的方法;样例的位置:X:\你的cocos2d-x\tests\cpp-tests\Classes\AccelerometerTest

当中要重写的方法为:onAcceleration(Acceleration* acc, Event* event)。 TMD区别好大有么有啊。



cocos2d-x每一个版本号都有变化有么有啊。坑爹……



只是坑爹归坑爹。引擎还是不错的。仅仅能说咱学的不好吧;



OK 废话太多了,開始说正事。





既然找到了正确的方法,那就好攻克了,首先是在.h头文件里定义好方法

#include "cocos2d.h"

class GameScene : public cocos2d::Layer
{
public:
static cocos2d::Scene* createScene(); virtual bool init();
//重写的父类的方法,用来处理重力加速器方法
void onAcceleration(cocos2d::Acceleration* acc, cocos2d::Event* event);
CREATE_FUNC(GameScene);
};

接着就是在cpp文件里去实现这种方法就OK了

//重写重力加速器方法
void GameScene::onAcceleration(Acceleration* acc, Event* event){
auto director = Director::getInstance();
if(img == NULL){
return;
} auto imgSize = img->getContentSize();
auto imgPosition = img->getPosition();
auto imgX = img->getPositionX();
auto imgY = img->getPositionY(); imgX += acc->x * gravityValue;
//imgY += acc->y * gravityValue;
//auto imgTemp = director->convertToUI(imgPosition); //imgTemp.x += acc->x * gravityValue;
//imgTemp.y -= acc->y * gravityValue;
//auto imgNext = director->convertToGL(imgTemp); FIX_POS(imgX, (origin.x + imgSize.width/2), (origin.x + visibleSize.width - imgSize.width/2));
FIX_POS(imgY, (origin.y + + imgSize.height/2), (origin.y + visibleSize.height - imgSize.height/2));
img->setPosition(Point(imgX, imgY)); log("onAcceleration: acc->x: %f, acc->y: %f, acc->z: %f, imgX: %f, imgY: %f",
acc->x, acc->y, acc->z, imgX, imgY);
}

能够看到当中有我凝视掉的一部分代码,这是本来官方演示样例文件里的依据“屏幕坐标系”以及“OpenGL坐标系”互相转换的方法,将样例中精灵的坐标互相转换,然后进行设置精灵坐标





事实上后来依据输出log測试。我发现cocos2d-x的默认的getPosition()获取的坐标是和OpenGL的坐标是一直的,所以最后我就凝视掉了样例中的转化方式,直接依据坐标点来设置精灵位置。这样是和经过转化的一样的效果的;





下边我画了几张图来简单的说明一下OpenGL坐标系,屏幕UI坐标系(仅仅是我自己觉得,假设有不正确的地方。望朋友们指正)



首先这个立方的 是我绘制的OpenGL的重力加速器的三维空间坐标系,旁边的蓝色表示一个手机平放时与坐标系的相应情况;依据图中箭头的方向。x、y、z三个坐标轴的值都是趋向于-1的;









以下这两个是平面的UI坐标系和GL坐标系

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHphbjEz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

UI坐标系的坐标原点是在左上角,Y轴向下延伸。当中精灵A位置为(10,10)







GL坐标系的原点是在左下角。Y轴向上延伸。精灵B(相当于UI坐标戏中的精灵A)位置为(10, 1280)(屏幕分辨率为720*1280时)

这就是在官方Test样例中UI坐标系和GL坐标系为什么要进行转换





cocos2d-x中的默认坐标系是和OpenGL的坐标是相同的,所以我直接依据getPosition()方式来获得位置的精神。这少了复杂的转换,由于只有官方的兑换可能有他们的意图权。现在不深究。



该博客的内容和个人原创博客同步更新:Melove 我爱

OK继续垒码

cocos2d-x V3.0 呼叫加速度计 Acceleration的更多相关文章

  1. Cocos2D-X v3.0 alpha1环境搭建

    周末看了下Cocos2D,感觉用起来还是挺爽的样子,跨平台,支持Windows, Linux, Mac, IOS, Android,WP...N多平台..还是C++开源滴,果断下下来研究下.. 最新版 ...

  2. 【cocos2d-js官方文档】二十五、Cocos2d-JS v3.0中的单例对象

    为何将单例模式移除 在Cocos2d-JS v3.0之前.全部API差点儿都是从Cocos2d-x中移植过来的,这是Cocos2d生态圈统一性的重要一环.可惜的是,这样的统一性也在非常大程度上限制了C ...

  3. 【cocos2d-js公文】十八、Cocos2d-JS v3.0物业风格API

    1. 新的API风格 我们直接来看看你能够怎样使用Cocos2d-JS v3.0: 曾经的API 新的API node.setPosition(x, y); node.x = x; node.y = ...

  4. FineUI(专业版)v3.0.0 发布,手机、平板和桌面全支持!

    FineUI(专业版)v3.0.0 已经正式发布,全面支持手机.平板和桌面!       自 2008 年 4 月发布第一个版本,我们持续更新了 126 个版本,拥有 16000 多位注册用户,130 ...

  5. css sprite,css雪碧图生成工具V3.0更新

    V3.0主要改进 1.增加了单独添加单张图片以及删除单张图片的功能 2.增加了生成.sprite文件用以保存雪碧图信息 3.增加了打开.sprite文件功能 什么是css sprite CSS spr ...

  6. [原创小工具]软件内存、CPU使用率监视,应用程序性能监测器 v3.0 绿色版

    应用程序性能监测器 V3.0 更新内容:    1.对一些代码进行了修改,软件本身的性能有所提升. 应用程序性能监测器 V2.0 更新内容:     1.鼠标移动到曲线区域,显示相关的曲线值      ...

  7. RDIFramework.NET ━ .NET快速信息化系统开发框架钜献 V3.0 版本强势发布

    继上个版本“RDIFramework.NET V2.9版本”的推出,受到了重多客户的认可与选择,V2.9版本是非常成功与稳定的版本,感谢大家的认可与长期以来的关注与支持.V3.0版本在V2.9版本的基 ...

  8. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.0 版新增消息管理

    在V3.0版本的Web(Mvc.WebForm)与WinForm中我们新增了“消息管理”模块.“消息管理”模块是对框架的所有消息进行管理.通过左侧的消息分类可以查看所选分类的所有消息列表.在主界面上我 ...

  9. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.0 版新增查询引擎管理

    欲了解V3.0版本的相关内容可查看下面的链接地址. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.0 版本发布 RDIFramework.NET — 基于.NET的快速信 ...

随机推荐

  1. nginx tcp proxy 连接保持设置

    根据前文Nginx tcp proxy module试用的设置,在测试环境中发现tcp连接经常掉线.在该项目站点上找到一个issue,也谈论这件事情,不过别人用在web socket协议上. 其实就是 ...

  2. 怎样在Android本地视频播放器开发

    在上一章Android本地视频播放器开发--SDL编译编译中编译出sdl的支持库,当时我们使用的2.0,但是有些api被更改了,所以在以下的使用者中我们使用SDL1.3的库,这个库我会传上源码以及编译 ...

  3. vim经常使用命令总结

    vim 选择文本,删除,复制,粘贴   文本的选择,对于编辑器来说,是非常主要的东西,也常常被用到,总结例如以下: v    从光标当前位置開始,光标所经过的地方会被选中,再按一下v结束. V     ...

  4. Java发展的时间表

    Java发展的时间表. (版本号 名称 中文名 发布日期) JDK 1.1.4 Sparkler 宝石 1997-09-12 JDK 1.1.5 Pumpkin 南瓜 1997-12-13 JDK 1 ...

  5. Android开发者必须深入学习的10个应用开源项目

    Android 开发又将带来新一轮热潮,很多开发者都投入到这个浪潮中去了,创造了许许多多相当优秀的应用.其中也有许许多多的开发者提供了应用开源项 目,贡献出他们的智慧和创造力.学习开源代码是掌握技术的 ...

  6. Java---25---集合框架共性方法

    集合类 为什么会出现集合类 面向对象语言对事物的体现都是以对象的形式,所以为了方便对较多个对象的操作,就对对象进行存储,集合就是存储对象最经常使用的一种方式 数组和集合类同一时候容器,有何不同? 数组 ...

  7. android编译自己 内置的jar做法

    1.首先 android.mk LOCAL_PATH := $(call my-dir) # ===================================================== ...

  8. VLine2.0——仿阿里巴巴VIPABC真人视频在线教育(基于Flash支持一对多多对多Web在线视频)

    感兴趣的朋友可与我联系:acsebt@qq.com 一.登陆页 二.功能页

  9. hdu 4529 Double Dealing (置换群)

    # include <stdio.h> # include <algorithm> # include <string.h> using namespace std ...

  10. 单片机实验: 三轴磁场模块 GY-271

    最近买了一块三轴磁场模块进行实验 名称:HMC5883L模块(三轴磁场模块) 型号:GY-271 使用芯片:HMC5883L 供电电源:3-5v 通信方式:IIC通信协议 测量范围:±1.3-8 高斯 ...