CocosBuilder3与Cocos2d-x遇到的一些问题

1。版本不匹配

  如果你见到类似  WARNING! Incompatible ccbi file version (file: 4 reader: 5)的提示,就表示你的cocos2d-x的CCBReader版本和CocosBuilder版本不一致

看一下CCBReader的代码,可以知道

    /* Read version. */
    int version = this->readInt(false);
    if(version != kCCBVersion) {
        CCLog("WARNING! Incompatible ccbi file version (file: %d reader: %d)", version, kCCBVersion);
        return false;
    }

#define kCCBVersion 5

CCBReader的版本

file: 4 表示你的UI数据文件版本是4, reader: 5 表示你的CCBReader版本是5 。证明你的CocosBuilder比cocos2d-x版本要旧,去找一个新的CocosBuilder。

反之(file: 5 reader: 4)证明你的cocos2d-x比CocosBuilder版本要旧,更新高版本cocos2d-x,不愿意替换所有的cocos2d-x,将libs/extensions/CCBReader目录换成新的就好了。


2.当将CCNode直接AddChild到当前Scene,而非更换场景时,CCControlButton可能响应不了触摸事件

        // Set the touch dispatcher priority by default to 1
        setDefaultTouchPriority(1);
        this->setDefaultTouchPriority(m_nDefaultTouchPriority);
看看CCControlButton的代码,发现他的TouchPriority为1,很容易被界面上的其他Layer吃掉,所以我说CCControlButton可能响应不了触摸事件,而不是一定响应不了

出现问题好解决,在OnEnter地方将控件

if (this->m_btnNormal)
        this->m_btnNormal->setDefaultTouchPriority(kCCMenuHandlerPriority);
  m_btnNormal怎么来的就不需要写了吧

CCB_MEMBERVARIABLEASSIGNER_GLUE(this, "btnNormal", CCControl *, this->m_btnNormal);

3.在cocosbuilder中新建一个CCScale9sprite,并在选择图素的时候选择plist中的图片,贴图错误

原因:拼图时不要用旋转,有时连裁切也不要用。(很坑爹)

但是不用cocosbuilder时CCScale9sprite可以的,其实就是CCScale9sprite的构造方式造成的,有时间看一下,应该可以解决

4.cocosbuilder中CCScale9sprite的Insets参数,又是一个坑爹的东西

CocosBuilder3与Cocos2d-x遇到的一些问题_第1张图片

这是什么?是对应CCScale9sprite创建方法的capInsets吗,

对应的图是

CocosBuilder3与Cocos2d-x遇到的一些问题_第2张图片

capInsets的值真的应该是(50, 70, 50, 50)吗?

看一看如果不用CocosBuiler的生成CCScale9Sprite的代码

    CCRect insetRect = CCRectMake(50, 70, 50, 25);
    CCScale9Sprite*sp = CCScale9Sprite::createWithSpriteFrameName("mis_border.png", insetRect );
    sp->setPosition(ccpSize(this->getContentSize(), 0.5));
    sp->setPreferredSize(CCSizeMake(winSize.width,winSize.height*0.7));
    this->addChild(sp,-1);
我的图片宽度是150大小,相信看见第一行代码,就能知道他们的不同了,


你可能感兴趣的:(C++,cocos2d,cocos2d-x)