cocosbuilder3 使用注意事项
2013-04-25 14:33
357 查看
1,cocosbuilder3 alpha 对应 cocos2d-x 2.1.1 版本 OK
2,cocosbuilder3 alpha 对应 cocos2d-x 2.1.2 版本 出现读取错误:
Cocos2d: WARNING! Incompatible ccbi file version (file: 4 reader: 5)
现象就是:模拟器黑屏,但不报错
3,cocosbuilder3 beta 对应 cocos2d-x 2.1.2 版本 xcode运行时直接报错。因项目比较急,原因见一位哥们的文章,我转载了,多谢:
/article/7919387.html
ccb3.0的例子中, 有两个clickme 的图片, 均放到了根目录的resources-auto 中
ccb会自动把这些资源缩到X售到发行目录resources-iphone 等等中
为我们开发多平台多设备提供了非常便利的支持,本书书说简短,感谢两个字我就不说了, 怪占篇幅的!
但是文件多了的话, CCB中会显的比较乱, 所以我需要在ccb的资源中创建目录, 把每个场景的资源分开来
注意:resources-auto中不支持创建子目录, 所以
我们在CCB的根目录下创建一个新的场景目录,并在该目录下创建resources-auto目录,然后把要缩放的资源放到这个目录中
这下CCB就可以将我们的资源自动缩放到不同的目录下了!!!
但是在程序中,还有一个问题,由于在
CCB中编译的资源被重定向到了子目录中如:LoginScene/xxxxxx.png ,而
自动目录确在文件夹:LoginScene/resources-iphone/xxxxxx.png 中, 所以程序启动的时候又找不到这个资源了, 既使我们设置程序目录
vecFindPath.push_back("Published-iOS/LoginScene/resources-iphone");
CCFileUtils::sharedFileUtils()->setSearchPaths(vecFindPath);
也同样定位不到这个目录中, 中间多了一级resources-iphone目录, 本人查了许多地方也没有找到哪里能设置这块, 所以本人直接修改了引擎的几行代码简单解决了一下!
文件:CCNodeLoader.cpp
函数:CCNodeLoader::parsePropTypeSpriteFrame()
原资源找不到的报错代码:
spriteFile = pCCBReader->getCCBRootPath() + spriteFile;
CCTexture2D * texture = CCTextureCache::sharedTextureCache()->addImage(spriteFile.c_str());
CCRect bounds =CCRectMake(0,0, texture->getContentSize().width,
texture->getContentSize().height); <--这里空指针异常
spriteFrame =CCSpriteFrame::createWithTexture(texture, bounds);
修正后的重定向资源代码:
if (spriteSheet.length() == 0)
{
spriteFile = pCCBReader->getCCBRootPath() + spriteFile;
//查找根目录,(自动资源已通过setSearchPaths重定向到相对根目录) 另外注意这里要优先找我们的目录,否则加载效率会大降
char*p = strrchr(spriteFile.c_str(), '/')+1;
std::string spriteFileAuto = pCCBReader->getCCBRootPath() + p;
CCTexture2D * texture = CCTextureCache::sharedTextureCache()->addImage(spriteFileAuto.c_str());
if(texture==NULL)
{
CCTextureCache::sharedTextureCache()->addImage(spriteFile.c_str());
}
CCRect bounds = CCRectMake(0, 0, texture->getContentSize().width,
texture->getContentSize().height);
spriteFrame = CCSpriteFrame::createWithTexture(texture, bounds);
}
else
{
...
}
经过以上的方案及代码调整,便可以配合setSearchPaths轻松管理自动资源目录了, 让我们把资源有序的管理起来吧!
自己做笔记,记下,浪费一天时间啊。。。。。
2,cocosbuilder3 alpha 对应 cocos2d-x 2.1.2 版本 出现读取错误:
Cocos2d: WARNING! Incompatible ccbi file version (file: 4 reader: 5)
现象就是:模拟器黑屏,但不报错
3,cocosbuilder3 beta 对应 cocos2d-x 2.1.2 版本 xcode运行时直接报错。因项目比较急,原因见一位哥们的文章,我转载了,多谢:
/article/7919387.html
引言:
ccb3.0的例子中, 有两个clickme 的图片, 均放到了根目录的resources-auto 中ccb会自动把这些资源缩到X售到发行目录resources-iphone 等等中
为我们开发多平台多设备提供了非常便利的支持,本书书说简短,感谢两个字我就不说了, 怪占篇幅的!
方案:
但是文件多了的话, CCB中会显的比较乱, 所以我需要在ccb的资源中创建目录, 把每个场景的资源分开来注意:resources-auto中不支持创建子目录, 所以
我们在CCB的根目录下创建一个新的场景目录,并在该目录下创建resources-auto目录,然后把要缩放的资源放到这个目录中
这下CCB就可以将我们的资源自动缩放到不同的目录下了!!!
问题:
但是在程序中,还有一个问题,由于在CCB中编译的资源被重定向到了子目录中如:LoginScene/xxxxxx.png ,而
自动目录确在文件夹:LoginScene/resources-iphone/xxxxxx.png 中, 所以程序启动的时候又找不到这个资源了, 既使我们设置程序目录
vecFindPath.push_back("Published-iOS/LoginScene/resources-iphone");
CCFileUtils::sharedFileUtils()->setSearchPaths(vecFindPath);
也同样定位不到这个目录中, 中间多了一级resources-iphone目录, 本人查了许多地方也没有找到哪里能设置这块, 所以本人直接修改了引擎的几行代码简单解决了一下!
解决:
文件:CCNodeLoader.cpp函数:CCNodeLoader::parsePropTypeSpriteFrame()
原资源找不到的报错代码:
spriteFile = pCCBReader->getCCBRootPath() + spriteFile;
CCTexture2D * texture = CCTextureCache::sharedTextureCache()->addImage(spriteFile.c_str());
CCRect bounds =CCRectMake(0,0, texture->getContentSize().width,
texture->getContentSize().height); <--这里空指针异常
spriteFrame =CCSpriteFrame::createWithTexture(texture, bounds);
修正后的重定向资源代码:
if (spriteSheet.length() == 0)
{
spriteFile = pCCBReader->getCCBRootPath() + spriteFile;
//查找根目录,(自动资源已通过setSearchPaths重定向到相对根目录) 另外注意这里要优先找我们的目录,否则加载效率会大降
char*p = strrchr(spriteFile.c_str(), '/')+1;
std::string spriteFileAuto = pCCBReader->getCCBRootPath() + p;
CCTexture2D * texture = CCTextureCache::sharedTextureCache()->addImage(spriteFileAuto.c_str());
if(texture==NULL)
{
CCTextureCache::sharedTextureCache()->addImage(spriteFile.c_str());
}
CCRect bounds = CCRectMake(0, 0, texture->getContentSize().width,
texture->getContentSize().height);
spriteFrame = CCSpriteFrame::createWithTexture(texture, bounds);
}
else
{
...
}
经过以上的方案及代码调整,便可以配合setSearchPaths轻松管理自动资源目录了, 让我们把资源有序的管理起来吧!
自己做笔记,记下,浪费一天时间啊。。。。。
相关文章推荐
- cocosbuilder 注意事项
- (2009-06-24) SqlCommandBuilder使用的注意事项 助睡眠音乐
- cocos2d-x-2.0.4中使用CocosBuilder创建动画注意的问题
- android:PopupWindow的使用场景和注意事项
- java的split使用注意事项
- ListView中getChildAt(index)的使用注意事项
- Halcon中使用elliptic_axis算子计算物件角度时的注意事项
- iPhone SDK中多线程的使用方法以及注意事项 转载
- 【CocosBuilder 开发系列之一】cocos2dx使用CocosBuilder完成骨骼动画 推荐
- tensorflow:使用tfrecords时的注意事项
- 位域结构体变量在主流控制器(ARM/DSP等)编程使用时注意事项
- 使用ScrollView注意事项
- 使用MODBUS的注意事项
- CCTableView的使用和注意事项
- C++模板使用注意事项
- UEditor添加一个普通按钮及其他使用注意事项
- ComboBox与DataGridView联合使用、ComboBox的SelectedIndexChanged和SelectionChangeCommitted事件的注意事项
- 使用Smarty的相关注意事项及访问变量的几种方式
- 使用lambda需要的注意事项
- bash中if条件语句的使用及bash返回值的注意事项