我想设计一个弹出框,打开方法传递一个函数的引用,弹出框显示后,上面有一个确定按钮,点确定会执行到传递进来的函数
其实看不太懂问题。
用libGUI的Button应该可以实现吧
void set_callback_function(std::function<void()> & fun);
if(close) {
fun();
}
可以使用用户事件监听器来做,在onEnter中做一下监听,析构的时候记得移除。然后必要的时候发送事件。
void PlayerLayer::onEnter()
{
Layer::onEnter();
//监听暂停事件和重新开始事件
_listener_pause = EventListenerCustom::create(dispatchLocalMsg(int)LocalMessageType::MGAME_PAUSE], CC_CALLBACK_1(PlayerLayer::pauseCallback, this));
_eventDispatcher->addEventListenerWithFixedPriority(_listener_pause,1);
_listener_resume = EventListenerCustom::create(dispatchLocalMsg(int)LocalMessageType::MGAME_RESUME], CC_CALLBACK_1(PlayerLayer::resumeCallback, this));
_eventDispatcher->addEventListenerWithFixedPriority(_listener_resume,1);
}
```
//分发用户注册的本地消息
void DealData::dispatchMessage(std::string message,void * data)
{
EventCustom event(message);
event.setUserData(data);
auto _dispatcher = Director::getInstance()->getEventDispatcher();
//给注册的事件监听器发送message
_dispatcher->dispatchEvent(&event);
}
还可以参考以下链接http://cn.cocos2d-x.org/article/index?type=cocos2d-x&url=/doc/cocos-docs-master/manual/framework/native/v3/event-dispatcher/zh.md
谢谢小塔前辈,问题解决了