Cocos2dx 3.0rc事件监听和消息通知
来源:互联网 发布:淘宝美工培训多少钱 编辑:程序博客网 时间:2024/05/21 08:03
Cocos2dx 3.0rc事件监听
1、新建一个存放数据的类
class AAA{public:CC_SYNTHESIZE(std::string, name, Name);CC_SYNTHESIZE(int, age, Age);~AAA(){ CCLOG("delete"); }};
2、新建一个”yang”的监听器,
方式1:利用C++lambda表达式
auto myListener = EventListenerCustom::create("yang", [=](EventCustom* event){AAA* b = (AAA*)(event->getUserData());CCLOG("getUserDate: name=%s , age=%d", b->getName().c_str(), b->getAge());delete b;});//委派这个监听器,_eventDispatcher是Node类上的成员变量,继承后可以直接使用_eventDispatcher->addEventListenerWithFixedPriority(myListener, 1);
方式2:回调函数方式
auto myListener = EventListenerCustom::create("yang", CC_CALLBACK_1(HelloWorld::myEventCustom,this));//分配这个监听器_eventDispatcher->addEventListenerWithFixedPriority(myListener, 1);void HelloWorld::myEventCustom(EventCustom* event){AAA* b = (AAA*)(event->getUserData());CCLOG("getUserDate: name=%s , age=%d", b->getName().c_str(), b->getAge());delete b;}
3、创建事件yang并添加数据,就可以通知yang监听器并获取数据
if (count == 3){AAA a;a.setName("myname");a.setAge(8);EventCustom event("yang");event.setUserData(&a);//分配事件_eventDispatcher->dispatchEvent(&event);}
这事件的创建我写在定时器里,count每秒+1;当满足条件时就创建这个yang时间
运行结果:
getUserDate: name=myname , age=8
delete
delete
Cocos2dx 3.0rc消息通知
1、在消息中心添加一个要监听的消息xuan,回调函数是ShowGameOver,传递到回调函数的参数是NULL
//监听一个xuan的消息,回调函数是ShowGameOver,NotificationCenter::getInstance()->addObserver(this, callfuncO_selector(HelloWorld::ShowGameOver), "xuan", NULL);
void HelloWorld::ShowGameOver(Ref* pObj){if (pObj != NULL){auto sp = (Sprite*)pObj;CCLOG("Game over ! tag=%d", sp->getTag());}}
2、往消息中心发送一个xuan消息,传递参数为sp(参数必须为Ref的子类)
if (count == 6){auto sp = Sprite::create("HelloWorld.png");sp->setTag(180);//发送一个xuan的消息,参数为sp,第二个参数必须是Ref的子类NotificationCenter::getInstance()->postNotification("xuan", sp);}
3、运行结果
Game over ! tag=1804、必须注意的问题
NotificationCenter::getInstance()->addObserver(this,callfuncO_selector(HelloWorld::ShowGameOver),"xuan",NULL);
NotificationCenter::getInstance()->postNotification("xuan",sp);
监听器和发射器的最后一个参数必须有一个为NULL,不然回调函数获取不到传递的参数,两个参数不知获取那个。
哪个不为NULL就获取哪个。
事件监听和消息通知的区别
区别在于传递的参数,事件监听可以传递任意类型的参数,而消息通知必须传递Ref的子类,也就是cocos2dx里面的object类
0 0
- Cocos2dx 3.0rc事件监听和消息通知
- 【Android】监听自定义通知栏消息事件
- Activiti 自定义事件监听和邮件通知
- cocos2dx 事件监听
- cocos2dx Eventdispatch事件监听
- Qt中的消息通知和事件发送
- 监听通知栏中的消息
- cocos2dx 精灵监听触摸事件
- cocos2dx自学之 事件监听
- cocos2dx 3.x事件监听
- cocos2dx 3.x事件监听
- ReactNative实现通知监听事件
- 监听和通知
- 学习笔记--cocos2dx-3.0中LabelTTF添加触摸监听事件
- windows的开发流程--事件通知和消息处理
- EXE和SYS基于事件同步消息通知
- notifications 消息通知(本地事件通知)
- 使用NotificationListenerService监听通知栏消息
- 我所理解的「有钱」
- SecureCRT密钥远程登录Linux
- 一个经典编程面试题的“终极”“隐退”
- 波动数列 - 蓝桥杯
- LightOJ 1193 Dice (II)(前缀和优化dp)
- Cocos2dx 3.0rc事件监听和消息通知
- PHP去除换行符与PHP_EOL变量的使用
- jquery插件jquery.jqzoom的用法
- Pushlet定点推送消息<一>
- 分区索引小结
- 中兴软创笔试前的一些准备
- 归并排序的若干理解
- Spring MVC Form Validation with Annotations Tutorial
- 学习HTML的一些记录