- 本帖最后由 young40 于 2012-12-29 05:32 编辑 *
CocosBuilder是Cocos2d系列的配套开源工具,最新的版本是3.0a, 也是我们这个系列文章所采用的版本. CCB(CocosBuilder简称)目前只有OS X版本, 没有Windows的版本, 而且源代码也是用Objective-c, 估计移植难度会比较大. 我想这个也是其不够流行的原因吧.如果你是CCB的熟客,那么你一定会记得CCB v2.x以前版本附带的例子. 而CCB v3.0采用了一个叫做CocosDragonJS的例子, 主要是展示CCB的Javascript的调用能力. 我虽然很喜欢JS, 但是正在学习2d-x, 又很想学好, 所以还是打好基础, 学好原滋原味的2d-x才好, 以后换用无论是Html5, 还是JS, Lua, 心里才会觉得踏实. 我无论C++,还是2d-x都是新手,又是第一次想正儿八经的写博客文章, 难免有很多错误, 还望各位看客踊跃拍砖.这次的目的是基本实现原来v2.0中的例子. 我采用的2d-x的版本是:cocos2d-2.1beta3-x-2.1.0, 以OS X版本为主, 以sample目录下的HelloCpp为基础改进. CCB的版本是v3.0alpha0.本文的目标是基本实现将CCB整合进Mac OS X版本的项目中.首先将2d-x源代码中sample目录下的HelloCpp目录重命名为TestCocosBuilder.并使用CocosBuilder创建新项目文件在其Resources文件夹中. 还需要将项目需要的图片资源放入Resources目录中. 具体可以参见我打包后的整体项目文件.还可以参见文末的目录树说明.贴下Xcode项目的目录,如果添加extensions应该逐个添加,否则可能会遇到编译错误,有可能会把其他平台文件错误添加进来.
做完这些准备工作后, 我们接下来按步来讲解.1.首先编辑下AppMacros.h, 修改以下代码AppMacros.h
static Resource smallResource = { cocos2d::CCSizeMake(480, 320), "resources-iphone" };
static Resource mediumResource = { cocos2d::CCSizeMake(1024, 768), "resources-ipad" };
static Resource largeResource = { cocos2d::CCSizeMake(2048, 1536), "resources-ipadhd" };
这一段主要是修改HelloCpp默认的资源目录, 配合CCB的发布路径.同时可以将原来几个目录中文件分别移入对应目录. 2.添加一个新类MainScene如下MainScene.h
#ifndef __HelloCpp__MainScene__
#define __HelloCpp__MainScene__
#include "cocos2d.h"
#include "cocos-ext.h"
class MainScene
: public cocos2d::CCLayer //从CCLayer派生
{
public:
static cocos2d::CCScene* scene();
};
#endif /* defined(__HelloCpp__MainScene__) */
MainScene.cpp
#include "MainScene.h"
USING_NS_CC;
USING_NS_CC_EXT;
CCScene* MainScene::scene()
{
CCScene *scene = CCScene::create();
CCNodeLoaderLibrary *lib = CCNodeLoaderLibrary::newDefaultCCNodeLoaderLibrary(); //生成一个默认的Node Loader
CCBReader *reader = new CCBReader(lib); //用node load lib 初始化一个ccb reader
CCNode *node = reader->readNodeGraphFromFile("MainScene.ccbi", scene); //从ccbi文件中加载node
reader->release(); //注意手动释放内存
if (node!=NULL)
{
scene->addChild(node); //将node 添加到scene中
}
return scene;
}