CCNotificationCenter处理消息事件
2013-09-25 20:54
337 查看
define CLICK_TEST_MSG "whatever_unique" // 添加监听 void GameMgr::addListener() { CCNotificationCenter* t_pNotiCenter = CCNotificationCenter::sharedNotificationCenter(); SEL_CallFuncO t_oCallFuncO = callfuncO_selector(GameMgr::onClickTest); t_pNotiCenter->addObserver(this, t_oCallFuncO, CLICK_TEST_MSG, NULL); } // 派发事件 void GameMgr::dispatchEvent() { CCNode* t_pNode = new CCNode(); CCString* t_pCcStrMsg = new CCString("i love u!"); t_pNode->setUserData(t_pCcStrMsg); CCNotificationCenter* t_pNotiCenter = CCNotificationCenter::sharedNotificationCenter(); t_pNotiCenter->postNotification(CLICK_TEST_MSG, (CCObject*)t_pNode); } // 事件响应 void GameMgr::onClickTest(CCObject* in_pCcObjData) { CCNode* t_pNode = (CCNode*)in_pCcObjData; CCString* t_pCcStrMsg = (CCString*)t_pNode->getUserData(); CCMessageBox(t_pCcStrMsg->getCString(), "Message"); // 传递完毕不要忘记释放内存 t_pCcStrMsg->release(); t_pNode->release(); } // 移除监听 void GameMgr::removeListener() { CCNotificationCenter* t_pNotiCenter = CCNotificationCenter::sharedNotificationCenter(); t_pNotiCenter->removeObserver(this, CLICK_TEST_MSG); }
然后写个小程序来实践下这个。
改用系统为我们创建的Helloworld,首先将系统中建立退出按钮的代码注释掉。
然后Helloworld::init中末尾这样写
CCSprite *button = CCSprite::create("CloseNormal.png"); button->setPosition(ccp(200,300)); CCNode* t_pNode = new CCNode(); t_pNode->setUserData(button); CCNotificationCenter* t_pNotiCenter = CCNotificationCenter::sharedNotificationCenter(); t_pNotiCenter->addObserver(this, callfuncO_selector(HelloWorld::onClickTest), CLICK_TEST_MSG, NULL); CCNotificationCenter::sharedNotificationCenter()->postNotification(CLICK_TEST_MSG, (CCObject*)t_pNode); this->addChild(button);
最后添加响应函数
void HelloWorld::onClickTest(CCObject* obj) { CCNode *temp =(CCNode*)obj; CCSprite *button =(CCSprite*)temp->getUserData(); button->setPosition(ccp(100,100)); }
最后看运行截图,看看按钮的位置。 证明事件真的被执行了。成功
相关文章推荐
- Cocos2d-x v3.x 的事件派发机制(消息处理机制CCNotificationCenter)
- Cocos2d-x CCNotificationCenter 通知中心 自定义消息事件
- iphone 消息处理事件 postNotificationName和addObserver的调用
- CCNotificationCenter事件监听器
- Cocos2D-x游戏开发之二十三:CCNotificationCenter观察者模式(2)-不同层之间事件的发送和接受
- iphone 消息处理事件 postNotificationName和addObserver的调用
- CCNotificationCenter传递消息和数据
- Cocos2d-x游戏开发中的消息机制:CCNotificationCenter的使用
- 【Cocos2dx游戏开发】CCNotificationCenter传递消息和数据
- cocos2dx 事件响应机制 CCNotificationCenter
- 【Cocos2dx游戏开发】CCNotificationCenter传递消息和数据
- iOS学习笔记之NSNotificationCenter(消息机制)
- 注册 创建 显示 刷新窗口(注建显新),事件,消息循环,消息处理,钩子,dll钩子. (注重理解其中的逻辑关系)
- Android4.2.2 SurfaceFlinger的相关事件和消息处理机制
- iOS Notification(二):处理&监听通知事件
- Unity3D 可重载虚函数总结(事件,回调函数,消息处理)
- 观察者模式——CCNotificationCenter
- Cocos2d-x CCNotificationCenter 通知中心
- CListCtrl控件主要事件及LVN_ITEMCHANGED消息和鼠标双击列表项事件的处理
- Android 四大组件之(3)BroadcastReceiver广播事件处理以及与Notification的配合使用详解