cocos2d-x实现cocosbuilder的绑定与菜单按钮功能

在cocosbuilder中新建"MainScene"任意名均可,设置custom class为XJLayer 菜单 按钮CCLABELTTF->

我新手不会讲解那些知识点,直接写出代码,亲测,网上的大神弄出的东西,不是少这个就少那个不敢恭维。我研究了一周也没弄出来,不知道怎么说他们了,坑爹。先弄出成果然后自己研究吧

//XJLayer.h文件


#ifndef __cba__XJLayer__

#define __cba__XJLayer__



#include "cocos2d.h"

#include "cocos-ext.h"

USING_NS_CC;

USING_NS_CC_EXT;


class XJLayer : public CCLayer, public CCBSelectorResolver, public CCBMemberVariableAssigner

{

//static

public:

CREATE_FUNC( XJLayer );

public:

    ~XJLayer()

{

    CC_SAFE_RELEASE_NULL( m_TestLabel );

}

void menuSelectorChangeAccount( CCObject* node );

void controlButtonTest(CCObject* pObject, CCControlEvent event);

//CCBSelectorResolver

virtual SEL_MenuHandler onResolveCCBCCMenuItemSelector(CCObject * pTarget, CCString * pSelectorName);

    virtual extension::SEL_CCControlHandler onResolveCCBCCControlSelector(CCObject * pTarget, CCString * pSelectorName);

//CCBMemberVariableAssigner

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

private:

CCLabelTTF* m_TestLabel;

};


class XJLayerLoader : public CCLayerLoader{

public:


CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD( XJLayerLoader, loader );


CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD( XJLayer );

};



#endif /* defined(__ConnectToCustomClass__XJLayer__) */


//.cpp


#include "XJLayer.h"

#include "main.h"

void XJLayer::menuSelectorChangeAccount( CCObject* pObject )

{

CCLog( "CGStartGameLayer::menuSelectorChangeAccount" );

    

CCScene* scene = Main::scene();

   

   

    CCDirector::sharedDirector()->replaceScene(scene);


}

void XJLayer::controlButtonTest(CCObject* pObject, CCControlEvent event)

{

   this->m_TestLabel->setString("Hello CocosBuilder!!!");

    

    CCLog( "CGStartGameLayer::controlButtonEventhandle" );

}


SEL_MenuHandler XJLayer::onResolveCCBCCMenuItemSelector(CCObject * pTarget, CCString * pSelectorName)

{

CCB_SELECTORRESOLVER_CCMENUITEM_GLUE( this, "menuSelectorChangeAccount", XJLayer::menuSelectorChangeAccount);

return NULL;

}




extension::SEL_CCControlHandler XJLayer::onResolveCCBCCControlSelector(CCObject * pTarget, CCString * pSelectorName)

{

CCB_SELECTORRESOLVER_CCCONTROL_GLUE( this, "controlButtonTest", XJLayer::controlButtonTest );

return NULL;

}


bool XJLayer::onAssignCCBMemberVariable(CCObject * pTarget, CCString * pMemberVariableName, CCNode * pNode)

{

CCB_MEMBERVARIABLEASSIGNER_GLUE( this, "m_TestLabel", CCLabelTTF*, m_TestLabel );

return false;

}

修改

AppDelegate.cpp

#include "cocos2d.h"

#include "cocos-ext.h"

#include "XJLayer.h"


bool AppDelegate::applicationDidFinishLaunching()

{

    // initialize director

    CCDirector *pDirector = CCDirector::sharedDirector();

    pDirector->setOpenGLView(CCEGLView::sharedOpenGLView());


    // turn on display FPS

    pDirector->setDisplayStats(true);


    // set FPS. the default value is 1.0/60 if you don't call this

    pDirector->setAnimationInterval(1.0 / 60);

    CCNodeLoaderLibrary::sharedCCNodeLoaderLibrary()->registerCCNodeLoader( "XJLayer", XJLayerLoader::loader());

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

    reader->autorelease();


    // run

    pDirector->runWithScene( reader->createSceneWithNodeGraphFromFile( "MainScene.ccbi" ) );


    return true;

}

实现菜单跳转场景需要另外新建一个场景。。。完事 

本人新手,有问题我能回答的也一定相告,大牛们都忙,不忙的也弄出一些坑爹的文章,再说就想骂人了 。。。闪


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-仅此而已

给我打赏的小哥哥小姐姐都好看

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值