Cocos2d-X 中CococsBuilder加载到程序中的用法小结

启动CococsBuilder->新建项目->编辑动画及图片->加入图片(project setting)->publish setting->public     之后除了Published-HTML5文件夹,其他的文件都放在resource文件夹中的一个文件夹中

1、在头文件之中:

#include"cocos2d.h"

#include <cocos-ext.h>

using namespace cocos2d;

USING_NS_CC_EXT;


class A:publicCCLayer,publicCCBMemberVariableAssigner,publicCCBSelectorResolver,publicCCNodeLoaderListener

{

public:

    virtual bool init();

    static CCScene *scene();

    void menuCloseCallback(CCObject *pSender);

    CREATE_FUNC(A);

    // CCBMemberVariableAssigner协议的方法

    virtual bool onAssignCCBMemberVariable(CCObject* pTarget,const char* pMemberVariableName, CCNode* pNode) ;

    //CCBSelectorResolver协议的方法

    virtual SEL_MenuHandler onResolveCCBCCMenuItemSelector(CCObject * pTarget,const char* pSelectorName)  ;

    virtual SEL_CallFuncN onResolveCCBCCCallFuncSelector(CCObject * pTarget,const char* pSelectorName);

    virtual SEL_CCControlHandler onResolveCCBCCControlSelector(CCObject * pTarget,const char* pSelectorName) ;

    //CCNodeLoaderListener协议的方法

    virtual void onNodeLoaded(CCNode * pNode,CCNodeLoader * pNodeLoader) ;

    

    CCLabelTTF *mylabel;

    CCBAnimationManager *manager;

    void setAnimatationManager(CCBAnimationManager *pAnimationManager);

    

};


class Headerlayerloader:publicCCLayerLoader

{

public:

    //创建了一个名字为loader函数,这个函数创建了一个Headerlayerloader的对象,并且返回这个对象

    CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(Headerlayerloader, loader);

protected:

    //这个宏定义了一个函数,返回Headerlayerloader对象

    CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(A);

    

};

2、在实现文件中:

CCScene *A::scene()

{

    //加载节点的库,将文件和类关联

    CCNodeLoaderLibrary::sharedCCNodeLoaderLibrary()->registerCCNodeLoader("HelloLayer",Headerlayerloader::loader());

    // CCBReader加载文件

    CCLOG("---------start-----------");

    CCBReader *reader=newCCBReader( CCNodeLoaderLibrary::sharedCCNodeLoaderLibrary() );

    reader->autorelease();

    //从  builder创建的场景中读取动画进行绑定

    CCNode *node=(CCNode *)reader->readNodeGraphFromFile("Test.ccbi");

    CCLOG("--------end------------");

    //设置动画管理器

    ( (A *)node)->setAnimatationManager(reader->getAnimationManager());

    //添加到场景中

    CCScene *scene=CCScene::create();

    if(node!=NULL)

    {

        scene->addChild(node);

    }

    return scene;

}

bool A::init()

{

    //

    if(!CCLayer::init())

    {

        return false;

    }

    //mylabel->setString("AAAAAAAAA");

    return true;

}


// CCBMemberVariableAssigner协议的方法

bool A:: onAssignCCBMemberVariable(CCObject* pTarget,const char* pMemberVariableName, CCNode* pNode)

{

    CCB_MEMBERVARIABLEASSIGNER_GLUE(this,"hellolabel", CCLabelTTF *,mylabel);

    return true;

}

//CCBSelectorResolver协议的方法

SEL_MenuHandler A::onResolveCCBCCMenuItemSelector(CCObject * pTarget,const char* pSelectorName)

{

     CCLog("aaaaaaaaaa");

    CCB_SELECTORRESOLVER_CCMENUITEM_GLUE(this,"onPress", A::menuCloseCallback);

    

    return NULL;

}

SEL_CallFuncN A::onResolveCCBCCCallFuncSelector(CCObject * pTarget,const char* pSelectorName)

{

    return NULL;

}

SEL_CCControlHandler A::onResolveCCBCCControlSelector(CCObject * pTarget,const char* pSelectorName)

{

    return NULL;

}


 //CCNodeLoaderListener协议的方法  绑定完成立刻调用

void A::onNodeLoaded(CCNode * pNode,CCNodeLoader * pNodeLoader)

{

    mylabel->setString("AAAAAAAAAAAA");

}


void A::menuCloseCallback(CCObject *pSender)

{

    CCLog("my name");

    manager->runAnimationsForSequenceNamed("flay");

    

}

//改变动画

void A::setAnimatationManager(CCBAnimationManager *pAnimationManager)

{

    CCLog("aaaaaaaaaaaaa");

    CC_SAFE_RELEASE_NULL(manager);

    manager  =  pAnimationManager;

    CC_SAFE_RETAIN(manager);

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值