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
  • 相关阅读:
    动手动脑
    选课1.0
    四则运算
    JAVA异常处理机制资料整理
    JAVA学习日报(快乐作业) 10.27
    JAVA学习日报(快乐作业) 10.20
    JAVA学习日报 9/30
    JAVA学习日报 9/28
    JAVA学习日报 9/27
    JAVA学习日报 9/26
  • 原文地址:https://www.cnblogs.com/hellenism/p/3469728.html
Copyright © 2011-2022 走看看