重写一个CCBI的加载类

news/2024/7/20 22:10:07 标签: cocos2d-x, CocosBuilder, IOS
直接上源代码
//
//  CCBILoader.h
//  DueWest
//
//  Created by zxh on 13-7-17.
//
//


#ifndef __DueWest__CCBILoader__
#define __DueWest__CCBILoader__


#include "cocos2d.h"
#include "cocos-ext.h"


//定义模板加载类
template<class T>
class CCBILoader : public cocos2d::extension::CCLayerLoader
{
public:
    CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(CCBILoader<T>, loader);
protected:
    CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(T);
};


//定义加载宏
#define AUTO_CCBI_LOADER(TYPE) CCBILoader<TYPE>::loader()


//模板函数用加载ccbi文件
template<class T>
inline cocos2d::CCNode* ccbiLoadNode(const char* fileName, const char* className, cocos2d::CCNode* pOwner)
{


    cocos2d::extension::CCNodeLoaderLibrary* pLoaderLibary = cocos2d::extension::CCNodeLoaderLibrary::newDefaultCCNodeLoaderLibrary();
    pLoaderLibary->registerCCNodeLoader(className, AUTO_CCBI_LOADER(T));
    cocos2d::extension::CCBReader* reader = new cocos2d::extension::CCBReader(pLoaderLibary);
    cocos2d::CCNode* pNode = reader->readNodeGraphFromFile(fileName, pOwner);
    reader->autorelease();
    return pNode;
}


template<class T>
inline cocos2d::CCScene* ccbiCreateScene(const char* fileName, const char* className, cocos2d::CCNode* pOwner = NULL)
{
    
    cocos2d::extension::CCNodeLoaderLibrary* pLoaderLibary = cocos2d::extension::CCNodeLoaderLibrary::newDefaultCCNodeLoaderLibrary();
    pLoaderLibary->registerCCNodeLoader(className, AUTO_CCBI_LOADER(T));
    cocos2d::extension::CCBReader* reader = new cocos2d::extension::CCBReader(pLoaderLibary);
    cocos2d::CCScene* pScene = reader->createSceneWithNodeGraphFromFile(fileName, pOwner);
    reader->autorelease();
    return pScene;
}


#define AUTO_CCBI_CREATE_SCENE(type,fileName) ccbiCreateScene<type>(fileName, #type, NULL)


#endif /* defined(__DueWest__CCBILoader__) */


上面是一个纯头文件,最后直接使用:AUTO_CCBI_CREATE_SCENE宏即可,下面是使用方法:

CCScene* PreBattleScene::scene()
{
    CCScene* pScene = AUTO_CCBI_CREATE_SCENE(PreBattleScene, "Images/PreBattleScene.ccbi");
    return pScene;
}

不用再去定义蛋疼的Loader类了




http://www.niftyadmin.cn/n/809467.html

相关文章

中国哪所大学的理论计算机水平高,在计算机领域,中国哪所大学最牛?

清华大学中国科学院主办、中国工程院、国家自然科学基金会共办的大型综合性学术日报《科学时报》&#xff0c;2004年8月17日用两个整版的篇幅刊登了中国管理科学研究院科学学研究所武书连、吕嘉、郭石林最近完成的《2004中国大学研究生院评价》。清华大学获第一名&#xff0c;北…

Sl独立存储使用

独立存储文件存放的位置&#xff1a;C:\Users\lxf\AppData\LocalLow\Microsoft\Silverlight\is\kbpvpqhq.0dm\udt0ydli.0p2\1\s\kzkoq2swcos1sdwaixu3glb2e53lb14li2f21renh5pgxm33bjaaaaaa\f&#xff08;每个人系统不同&#xff0c;存放位置也不同&#xff09; 1、键值对 priv…

cocos2d-x结合cocosbuilder,不同屏幕适配小结

这个问题搞了好几天才解决&#xff0c;在此总结一下: 首先约定只使用一套图片资源同时应用于iphon4和iphon5(测试过在ipad下也能显示正常)&#xff0c; 这里我们将需要全屏显示的背景制作为iphon5的尺寸即&#xff1a;1136 * 640 一、cocosbuilder 1. 新建一个场景文件&…

对计算机系统进行软攻击的方法,计算机软件中安全漏洞检测方法研究

论文写作指导&#xff1a;请加QQ97050021计算机软件安全漏洞是指计算机在网络环境中将造成计算机操作环境安全的漏洞&#xff0c;下面是小编搜集整理的一篇探究计算机软件安全漏洞现状的论文范文&#xff0c;欢迎阅读借鉴。摘 要&#xff1a;计算机软件安装和运行时往往会出现很…

使用node.js中加载cocos2d-html5

最近发现cocos2d-html5非常的有意思&#xff0c;正好在国庆放假要回老家&#xff0c;没有网络&#xff0c;没有MAC&#xff0c;只有一台老电脑。 于是想这段时间可以研究一翻&#xff0c;node.js方便快捷 不需要安装一大堆东西。 var express require(express); server exp…

gRPC基础:C++

原文地址&#xff1a;http://doc.oschina.net/grpc?t57966gRPC基础&#xff1a;C 本教程提供了C程序员如何使用gRPC的指南。 通过学习教程中例子&#xff0c;你可以学会如何&#xff1a; 在一个 .proto 文件内定义服务.用 protocol buffer 编译器生成服务器和客户端代码.使用 …

计算机等级考试考前冲刺,计算机等级考试一级ps考前冲刺试题

计算机等级考试一级ps考前冲刺试题大家在复习的时候不要忘了多做试题&#xff0c;接下来应届毕业生小编为大家精心准备了计算机等级考试一级ps考前冲刺试题&#xff0c;希望能够给大家带来帮助!1. Photoshop的当前状态为全屏显示&#xff0c;而且未显示工具箱及任何调板&#x…

记录cocos2d-html5与cocosd-x jsb中遇到的坑

这两天开始用coco2d-html5写游戏, 但最终是发布到手机上, 写的js代码是跑在jsb上的. 在此记录下遇到的坑. 注:cocos2d-x 简称 cx, cocos2d-html5 简称ch5 1. cc.LabelTTF 在ch5上换行有问题 CCLabelTTF在ch5上对应的是cc.LabelTTF, 在cx上只要设置了setDimensions()设置高度…