cocos2d-x坑的集合

来源:互联网 发布:无法更改mac地址 编辑:程序博客网 时间:2024/06/03 00:18

坑1:

如果提示找不到"extensions/ExtensionExport.h",那么请在附加包含目录里加上$(EngineRoot)路径。

坑2:

新版本的Scale9Sprite在cocos2d::ui里面。

坑3:

cocos2d-x的缓存机制:原帖地址:http://blog.csdn.net/natsu1211/article/details/27092903

坑4:

cocos2d-x的触摸机制:原帖地址:http://www.tuicool.com/articles/Rjim6zhttp://blog.csdn.net/tom_and_jerry_zhao/article/details/51140561
//添加触摸响应    auto listener1 = cocos2d::EventListenerTouchOneByOne::create();    listener1->setSwallowTouches(true); //不向下传递触摸    listener1->onTouchBegan = [&](cocos2d::Touch* touch, cocos2d::Event* evt)->bool    {        if (_curState == Button::ButtonState::ButtonState_Disable)            return false;        auto target = evt->getCurrentTarget();//获取目前的点击对象        //获取点击的坐标在target的坐标系中的位置        cocos2d::Vec2 locationInNode = target->convertToNodeSpace(touch->getLocation());        cocos2d::Size targetSize = target->getContentSize();        cocos2d::Rect rct = { 0,0,targetSize.width,targetSize.height };        bool isClicked = rct.containsPoint(locationInNode);        if (isClicked)        {            if (_curState == Button::ButtonState::ButtonState_Up)            {                this->setButtonState(Button::ButtonState::ButtonState_Down);                this->onButtonPressed();            }            return true;        }        return false;//这里返回false那么后面的onTouchMoved,onTouchEnded就不会被调用了    };    listener1->onTouchEnded = [&](cocos2d::Touch* touch, cocos2d::Event* evt)->void    {        auto target = evt->getCurrentTarget();//获取目前的点击对象                                              //获取点击的坐标在target的坐标系中的位置        cocos2d::Vec2 locationInNode = target->convertToNodeSpace(touch->getLocation());        cocos2d::Size targetSize = target->getContentSize();        cocos2d::Rect rct = { 0,0,targetSize.width,targetSize.height };        bool isInRegion = rct.containsPoint(locationInNode);        if (isInRegion)        {            if (_curState == Button::ButtonState::ButtonState_Down)            {                this->setButtonState(ButtonState::ButtonState_Up);                this->onButtonReleased();            }        }    };    listener1->onTouchMoved = [&](cocos2d::Touch* touch, cocos2d::Event* evt)->void    {        auto target = evt->getCurrentTarget();//获取目前的点击对象                                              //获取点击的坐标在target的坐标系中的位置        cocos2d::Vec2 locationInNode = target->convertToNodeSpace(touch->getLocation());        cocos2d::Size targetSize = target->getContentSize();        cocos2d::Rect rct = { 0,0,targetSize.width,targetSize.height };        bool isInRegion = rct.containsPoint(locationInNode);        if (!isInRegion)        {            if (_curState == Button::ButtonState::ButtonState_Down)            {                this->setButtonState(ButtonState::ButtonState_Up);                this->onButtonMoveOutsideRange();            }        }    };    //添加按键响应    cocos2d::Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener1, _upSprite);

别忘了在onExit里面把这个不用的listener1注销掉,否则会报错

void Button::onExit(){    //在exit之前,得释放一些不用的资源    cocos2d::Director::getInstance()->getEventDispatcher()->removeEventListenersForTarget(_upSprite);    UIObject::onExit();}

cocos2d-x打包android包命令

进入proj.android目录
运行cocos compile -p android

在cocos2d-x c++项目中集成lua

1.首先去lua的官网下载lua源码
这里写图片描述
2.将源码解压出来放入我们的项目Classes目录里面
这里写图片描述
3.修改adnroid.mk文件
这里写图片描述
4.运行cocos compile -p android
期间可能会遇到llex.c文件中出错,照下面这样改即可:
这里写图片描述
当然,这样处理比较暴力,如果有更好的办法,请告知在下。这样修改之后,应该就能正确的打包了。但是打出来的包运行时候黑屏了,我的天哪,待我找找办法。

有些文件在android平台上找不到

请使用cocos2d::FileUtils::fullPathForFilename(filename),一次性解决所有烦恼。

0 0
原创粉丝点击