Cocos2D-X为我们准备了太多东西,当我们想要监听一个动作但是都不能老是盯在这一件事情上的时候就可以用他为我们量身定制的观察者模式,今天我们初步来学习一下这个传说很久的观察这模式在Cocos2D-X中的简单运用。
其实观察者模式的初步学习还是很简单的我们只要定义两个函数即可:
class HelloWorld : public cocos2d::CCLayer
{
public:
virtual bool init();
static cocos2d::CCScene* scene();
void sengMsg(CCObject *pSender);
void testMSG(CCObject *pSender);
CREATE_FUNC(HelloWorld);
};
#endif // __HELLOWORLD_SCENE_H__
然后在init()函数中添加事件的监听。在SendMSG()函数中发送事件消息。
bool HelloWorld::init()
{
bool bRet = false;
do
{
//
// super init first
//
CC_BREAK_IF(! CCLayer::init());
CCNotificationCenter::sharedNotificationCenter()->addObserver(this,callfuncO_selector(HelloWorld::testMSG),"test",NULL);
CCMenuItemLabel *labelItem = CCMenuItemLabel::create(CCLabelTTF::create("Send MSG","Arial",26),this,menu_selector(HelloWorld::sengMsg));
CCMenu *menu = CCMenu::create(labelItem,NULL);
this->addChild(menu);
bRet = true;
} while (0);
return bRet;
}
void HelloWorld::sengMsg(CCObject *pSender)
{
CCLOG("sendMSG");
CCNotificationCenter::sharedNotificationCenter()->postNotification("test",NULL);
}
void HelloWorld::testMSG(CCObject *pSender)
{
CCLOG("testMSG");
}
现在当我们点击菜单按钮式就可以看到事件被发送和接受的调试信息: