CocoStudio 在c++响应回调方法

来源:互联网 发布:linux打印行号 编辑:程序博客网 时间:2024/06/08 15:29

cocos2dx 3.9

cocostudio 3.9

今天用到了按钮的回调方法


回调方法有Click和Touch两种。分别是对应cocos2dx的addClickEventListener和addTouchEventListener.

看代码

//依次对应csb文件的按钮名称std::string btnName[]={"singlegame_btn","mulgame_btn","music_btn","loadgame_btn","exitgame_btn"};for(auto n:btnName){auto btn = dynamic_cast<Widget*>(csb->getChildByName(n));//获取回调函数名称auto callbackName = btn->getCallbackName();//获取回调类型auto callbackType = btn->getCallbackType();//绑定到相应的函数this->bindCallback(callbackName,callbackType,btn);}

然后我们看看bindCallback函数

void MenuScene::bindCallback(const std::string&callbackName,const std::string&callbackType,Widget*widget){//单人游戏按钮if(callbackName == "singleGame" && callbackType == "Click")widget->addClickEventListener(CC_CALLBACK_1(MenuScene::singleGame,this));//多人游戏按钮if(callbackName == "mulGame" && callbackType == "Click")widget->addClickEventListener(CC_CALLBACK_1(MenuScene::mulGame,this));//音效操作按钮if(callbackName == "operateMusic" && callbackType == "Click")widget->addClickEventListener(CC_CALLBACK_1(MenuScene::operatorMusic,this));//载入游戏按钮if(callbackName == "loadGame" && callbackType == "Click")widget->addClickEventListener(CC_CALLBACK_1(MenuScene::loadGame,this));//退出游戏按钮if(callbackName == "exitGame" && callbackType == "Click")widget->addClickEventListener(CC_CALLBACK_1(MenuScene::gameExit,this));}
在这里面就是判断当前所属的事件,然后进行绑定

还有一种就是直接绑定了,不获取回调函数名

auto loadGameBtn = dynamic_cast<Widget*>(csb->getChildByName("loadgame_btn"));//也可以是addTouchEventListener()loadGameBtn->addClickEventListener(CC_CALLBACK_1(MenuScene::loadGane,this));
两种方法,孰优孰劣,看情况

,最后上一张效果图


参考文档

http://www.cocoachina.com/cms/wap.php?action=article&id=11625



1 0
原创粉丝点击