添加监听:
声明:
//_target 被监听对象
//_target->*_selector 回调函数
//name 消息id
//sender 发送者 或 数据
void addObserver(Ref *target, SEL_CallFuncO selector, const std::string& name, Ref *sender);
使用:
NotificationCenter::getInstance()->addObserver(this, CC_CALLFUNCO_SELECTOR(Light::switchStateChanged), MSG_SWITCH_STATE, nullptr);
发送消息:
声明:
void postNotification(const std::string& name);
void postNotification(const std::string& name, Ref *sender);
使用:
NotificationCenter::getInstance()->postNotification(MSG_SWITCH_STATE, (Ref*)(intptr_t)item->getSelectedIndex());
注意:
//_target 被监听对象
//_target->*_selector 回调函数
if (_target)
{
if (sender) {
(_target->*_selector)(sender);
} else {
(_target->*_selector)(_sender);
}
}
删除监听:
声明:
void removeObserver(Ref *target,const std::string& name);
int removeAllObservers(Ref *target);
使用:
NotificationCenter::getInstance()->removeObserver(this, MSG_SWITCH_STATE);
回调函数:
void Light::switchStateChanged(Ref* obj)
{
s_bSwitchOn = obj == 0x00 ? false : true;
updateLightState();
}
void Light::updateLightState()
{
if (s_bSwitchOn && _connected)
{
this->setOpacity(255);
}
else
{
this->setOpacity(50);
}
}