TSEvent消息系统.c++版小样
来源:互联网 发布:matlab m文件读取数据 编辑:程序博客网 时间:2024/05/18 00:51
最近开始搞cocos2dx的相关游戏..发现cocos2dx里面的很多东西用起来Q不爽的...哎~.为了更好的和更方便的移植代码.所以搞了个事件系统的小样.boost又不好移植.还是自己动手丰衣足食吧.. 写这个东东想了好长时间..始终没办法 摆脱TSObject这个基类..如果有大神可以把这个基类摘掉..那么就太谢谢了哈..
//// main.m// CTest//// Created by TSEnel on 13-5-4.// Copyright (c) 2013年 TSEnel. All rights reserved.//#include <iostream>#include <string>#include <map>using namespace std;// 全局基类class TSObject{};// 全局回调类型定义typedef void (TSObject::*TpInstFun)(string sBuffer);// TS事件系统class TSEvent : public TSObject{public: void RegistEvent(string sEventKey, TSObject* pInst, TpInstFun pFun) { m_MapEvent[sEventKey][pInst] = pFun; } void UnRegistEvent(string sEventKey, TSObject* pInst) { m_MapEvent[sEventKey].erase(pInst); } void UnRegistEvent(string sEventKey) { m_MapEvent.erase(sEventKey); } void SendMessage(string sEventKey, string sBuffer) { if (m_MapEvent.count(sEventKey)) { map<TSObject*, TpInstFun>& pInstMap = m_MapEvent[sEventKey]; map<TSObject*, TpInstFun>::iterator iter = pInstMap.begin(); for (; iter != pInstMap.end(); iter++) { TSObject* pInst = iter->first; TpInstFun pFun = iter->second; (pInst->*pFun)(sBuffer); } } else { cout << "没有消息码 : " << sEventKey << endl; } } public: map<string, map<TSObject*, TpInstFun> > m_MapEvent;};// 测试类TSGameclass TSGame : public TSObject{public: TSGame(string name) { m_Name = name; } void EventLogin(string sBuffer){ cout << m_Name << " : EventLogin : " << sBuffer << endl; } void EventExit(string sBuffer){ cout << m_Name << " : EventExit : " << sBuffer << endl; } public: string m_Name;};//测试类TSAppclass TSApp : public TSObject{public: TSApp(string name) { m_Name = name; } void EventStart(string sBuffer) { cout << m_Name << " : " << sBuffer << endl; } public: string m_Name;};// 声明全局事件系统TSEvent G_EventSys;// 入口函数int main(int argc, const char * argv[]){ TSGame pG("TS1"); TSGame pG2("TS2"); G_EventSys.RegistEvent("Login", &pG, (TpInstFun)&TSGame::EventLogin); G_EventSys.RegistEvent("Login", &pG2,(TpInstFun)&TSGame::EventLogin); TSApp pA("APP1"); G_EventSys.RegistEvent("Start", &pA, (TpInstFun)&TSApp::EventStart); G_EventSys.RegistEvent("Exit", &pG, (TpInstFun)&TSGame::EventExit); G_EventSys.SendMessage("Login", "WWWWW!!!!!***(FD)SFDS!"); G_EventSys.SendMessage("Start", "WQL!"); G_EventSys.SendMessage("Exit", ""); G_EventSys.UnRegistEvent("Exit"); G_EventSys.UnRegistEvent("Exit"); G_EventSys.SendMessage("Exit", ""); return 0;}
- TSEvent消息系统.c++版小样
- C语言电影购票系统小样
- 小样
- C#-消息队列系统
- 小样:内存管理系统实现,提供可持久化功能
- C 消息连接的一种系统方法
- C语言:嵌入式系统的消息机制
- 游标小样
- 小样的
- 小样加油!
- 钱小样
- 理解梯度下降,随机梯度下降,附电影推荐系统的简单代码小样 1.
- 理解梯度下降,随机梯度下降,附电影推荐系统的简单代码小样 2
- 系统消息
- 系统消息
- 系统消息
- 系统消息
- 系统消息
- Android平台上如何让应用程序获得系统权限以及如何使用platform密钥给apk签名
- 前端的几种特殊样式
- iOS tabbarviewControll的简单使用设置
- Flume——安装与配置
- Android不让弹出键盘挡住View
- TSEvent消息系统.c++版小样
- 不靠谱
- 题目1384:二维数组中的查找(剑指offer-面试题3)
- android 线程池
- C语言中##和#的用法
- ExecutorService常用方法和newFixedThreadPool创建固定大小的线程池
- ubuntu下使用qemu-system-arm模拟arm环境
- android -- NDK 编译环境搭建
- 怎样部署或打包刚刚做好的java web项目产品