如果你见到类似 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参数,又是一个坑爹的东西
这是什么?是对应CCScale9sprite创建方法的capInsets吗,
对应的图是
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大小,相信看见第一行代码,就能知道他们的不同了,