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
  • 相关阅读:
    JDBC
    Oracle基本数据类型
    vue生命周期详解
    Vue的Ajax(vue-resource/axios)
    Vue实例属性/方法/生命周期
    Vue自定义指令
    深入了解组件- -- 动态组件 & 异步组件
    深入了解组件- -- 插槽
    深入了解组件- -- 自定义事件
    深入了解组件- -- Prop
  • 原文地址:https://www.cnblogs.com/hellenism/p/3469728.html
Copyright © 2011-2022 走看看