zoukankan      html  css  js  c++  java
  • [Cocos2d-x]节点之间的相互通讯

     在做.NET开发时,对象之间的相互通讯一般使用事件(event)实现,事件概念是.NET对Delegate的封装。

    在Cocos2d-x开发过程中,对象之间的通讯刚开始时不知道如何实现,于是想到c++中的函数指针,蹩脚实现了之后发现,Cocos2d-x已经为我们提供了

    很多Delegate,我们只需要像声明event一样在类中定义所需的CCCallFunc,变可以实现节点之间的相互通讯。

    例子:

    class FirstLayer:public BaseLayer
    {
    public:
        //定义一个CCCallFunc属性
        CC_SYNTHESIZE_RETAIN(CCCallFunc*, m_CCCallFunc_ShowMsgBox, AddHandler);
        
    public:
        FirstLayer();
        virtual ~FirstLayer();
        virtual bool init();
        virtual void onEnter();
        virtual void onExit();
        CREATE_FUNC(FirstLayer);
    };
    

    调用:

        FirstLayer* firstLayer = FirstLayer::create();
        SecondLayer* secondLayer = SecondLayer::create();
        
        CCCallFunc* myCallback = CCCallFunc::create(secondLayer, callfunc_selector(SecondLayer::newShowMsg));
        firstLayer->setAddHandler(myCallback);
    
        addChild(firstLayer);
        addChild(secondLayer);
    

    当FirstLayer,在方法中出发CCCallFunc时,SecondLayer就会调用newShowMsg方法

    人生就是一局不能Again的DOTA
  • 相关阅读:
    SQL Server 2005 全文搜索包括改进和更新的干扰词文件FROM MS KB
    服务器内存选项From MS
    跳过事务复制中的错误
    WP7基础补充
    TaoBaoAPI简介3
    登录功能代码
    TaoBaoApI简介1
    TaoBaoAPI简介2
    WP7基础学习第十三讲
    WP7基础学习第十四讲
  • 原文地址:https://www.cnblogs.com/hellenism/p/3469728.html
Copyright © 2011-2022 走看看