1.加载button时如果没有设置Pressed和Disnable图标,stExpCocoNode::GetValue返回null导致崩溃,修改stExpCocoNode::GetValue函数代码为
char* stExpCocoNode::GetValue(CocoLoader* pCoco)
{
char* szValue = ( pCoco->GetMemoryAddr_String() + m_szValue );
if( 0==strcmp(szValue,“null”) && GetType(pCoco) == kStringType )
{
strcpy(szValue,"");
}
return szValue;
}
2.Label初始化字体时,因为加载csb是jsonpath为全路径,BitmapDC:setFont() 的这一句strcpy_s(tNewFont.lfFaceName, LF_FACESIZE, fontName.c_str()) 导致溢出,修改方法如下GUIReader::widgetFromBinaryFile函数体内
//jsonpath = CCFileUtils::getInstance()->fullPathForFilename(fileName); 这句注释
jsonpath = fileName; 添加这句
修复这2处。cocos2d-x 3.2加载 cocosstudio 1.5以上生成的csb文件不再崩溃
感谢您的反馈,我们会尽快修改并更新引擎。
我的项目生成的二进制 .csb 从来都没加载成功过,就算是昨晚从 github 下的最新 cocos2d-x 代码也是。我还以为这功能一直没完善呢?原来有人是在用的啊?
m_rootWidget = cocostudio::GUIReader::getInstance()->widgetFromBinaryFile(“res/Game/Game.csb”);
前面就跟版主反馈过加载label字体崩溃的问题,无论是用csv或json加载都有这问题。
原因是字体名取的fullpath + fontName,这样超过默认的字体名字缓冲区长度32字节,造成溢出。最好的解决办法是修改那个字体缓冲区大小的宏。不过目前我用的解决方法和楼主类似,就是在setFontName函数中取消加上全路径的代码。
同意楼上,不过我看了下,缓冲区的大小我还不敢改,因为没工夫仔细去看他的代码
我试了下,有个问题哦,就是假如这个界面有动画A和B,那加载的时候会出现动画A和A。。。。我是2.2.5版本。。。
第二条解决了我的问题,现在能加载1.5.0.1,官方赶紧打补丁啊,这个老bug