CocoStudio 在c++响应回调方法

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值