您的位置:首页 > 移动开发 > Cocos引擎

Cocos2D-x游戏开发之:CCNotificationCenter观察者模式基础

2017-10-06 09:13 477 查看
Cocos2D-X为我们准备了太多东西,当我们想要监听一个动作但是都不能老是盯在这一件事情上的时候就可以用他为我们量身定制的观察者模式,今天我们初步来学习一下这个传说很久的观察这模式在Cocos2D-X中的简单运用。

其实观察者模式的初步学习还是很简单的我们只要定义两个函数即可:

[cpp] view
plain copy

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()函数中发送事件消息。

[cpp] view
plain copy

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");  

}  

现在当我们点击菜单按钮式就可以看到事件被发送和接受的调试信息:







顶0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: