cocos2dx 消息发送与接收

     cocos2dx有个自定义事件可以实现消息的发送和接收,叫EventListenerCustom。它是通过一个字符串来标识事件名称的。下面介绍下,我实现的这个消息的发送和接收。

     首先,我们定义2个类,一个消息接收类,一个消息发送类。代码如下:

     

//消息接收
class cMsgReceiver
{
public:

    virtual void RecMsg(int iMsgId, void* pInfo, int iSize)
    {

    }

};

//消息发送
class cMsgSender
{
protected:
    cMsgReceiver* m_pReceiver;

public:
    void setMsg(cMsgReceiver* receiver)
    {
        m_pReceiver = receiver;
    }

    bool sendMsg(int iMsgId, void* pInfo, int iSize)
    {
        if (m_pReceiver == NULL)
        {
            return false;
        }
        else
        {
            m_pReceiver->RecMsg(iMsgId, pInfo, iSize);
            return true;
        }

    }
};
View Code

 

        那么,如何使用呢,很简单。

 

//消息体
struct Msg_ServerId
{
    int iServerId;
};

//消息id
enum MsgId
{
   E_SERVERID = 1,
};


class A:public cMsgReceiver
{
public:
    void RecMsg(int iMsgId, void* pInfo, int iSize)
    {
        switch (iMsgId)
        {
        case E_SERVERID:
            Msg_ServerId* msg = (Msg_ServerId*)pInfo;
            int id = msg->iServerId;
            break;
        }
            
    }

};

class B:public cMsgSender
{
public:
    void doSendMsg()
    {
        Msg_ServerId msg;
        msg.iServerId = 1;

        sendMsg(E_SERVERID, &msg, sizeof(msg));
    }

};
View Code

 

A a;
B b;
b.setMsg(&a);
b.doSendMsg();

 

转载于:https://www.cnblogs.com/OrangeLife/p/4150620.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值