启动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);
}