1.使用模板定义一个通用的ccbi加载类
class CCBLayerLoader : public CCLayerLoader
{
public:
CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(CCBLayerLoader<T>, loader);
protected:
CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(T);
};
2.再懒一点,写个宏来调用loader()方法
#define CCB_LAYER_LOADER(_TYPE_) CCBLayerLoader<_TYPE_>::loader()
3.与一个全局函数来加载ccbi文件
static CCNode* ccbiLoader(const char* fileName, const char* className, CCNode* pOwner=NULL){
CCNodeLoaderLibrary* libary = CCNodeLoaderLibrary::newDefaultCCNodeLoaderLibrary();
libary->registerCCNodeLoader(className, CCB_LAYER_LOADER(MyScene));
CCBReader* reader = new CCBReader(libary);
CCNode* node = reader->readNodeGraphFromFile(fileName, pOwner);
reader->autorelease();
return node;
}
4.可以享受成果了,在自定义的类中使用
CCNode* MyScene::createScene(CCNode* pOwner){
CCNode* pNode = ccbiLoader("MyScene.ccbi", "MyScene", pOwner);
return pNode;
}