CCNotificationCenter事件监听器
来源:互联网 发布:十大元帅 知乎 编辑:程序博客网 时间:2024/06/05 08:43
转自 点击打开链接
CCNotificationCenter事件监听器也好,观察者模式也罢,这个东西的用处就是用在俩个类通信的时候,一个类用来发送消息,一个类用来接收消息。其实这个东西的用处是非常大的,举个例子吧。比如一片草地,会在不同的季节反应出不同的状态,春天的时候草长了出来,都是绿的,夏天的时候草长的更高了,秋天的时候又会变颜色,在四季更换的不同状态下,草的颜色也会跟着发生改变,也就是会对应不同的状态,这个天气信息就可以看成发送过来的消息,而对这些消息的处理就是状态之间的相互切换。我也不知道说的正确不正确,但是推荐给大家一篇博客,不理解的可以看看。事件驱动,你想象不到的强大。下面我来说说怎么用这个东西,以及用的时候要注意的一些问题。
1
//将消息名定义在一个头文件中
2
#ifndef _NOTIFICATION_H_
3
#define _NOTIFICATION_H_
4
5
#define MY_NOTIFICATION "Hello"
6
7
#endif
CCNotification采用了单例的设计模式,使用函数addObserver来监听消息。这段代码我写在了init中。
1
//第一个参数是监听消息的对象,第二个参数是消息发来的时候调用的函数,第三个参数消息的名字
2
//第四个参数消息体
3
CCNotificationCenter::sharedNotificationCenter()->addObserver(
this
,
4
callfuncO_selector(TestScene::getNotification),MY_NOTIFICATION,NULL);
1
//第一个参数是监听消息的对象,第二个参数是消息发来的时候调用的函数,第三个参数消息的名字
2
//第四个参数消息体
3
CCNotificationCenter::sharedNotificationCenter()->addObserver(
this
,
4
callfuncO_selector(TestScene::getNotification),MY_NOTIFICATION,NULL);
1
//监听消息的函数
2
void
TestScene::getNotification(CCObject * object)
3
{
4
int
* i = (
int
*)object;
5
CCLog(
"HelloWorld i = %d"
,i);
6
}
接下来就是使用post来发送消息了。
1
void
HelloWorld::menuCloseCallback(CCObject* pSender)
2
{
3
//注意1、在发送消息之前一定要先初始化TestScene,这个时候在TestScene的init方法中已经注册了消息,也就是
4
//调用了addObserver函数,否则的话是接受不到消息的
5
CCDirector::sharedDirector()->replaceScene(TestScene::scene());
6
7
//第一个参数是消息的名字,第二个参数是CCObject * 类型的消息值,也就是你要发送的东西
8
CCNotificationCenter::sharedNotificationCenter()->postNotification(MY_NOTIFICATION,(CCObject *)1);
9
}
释放消息一般写在onExit()函数中,就是谁监听消息,谁释放消息。
1
void
TestScene::onExit()
2
{
3
//注意最后一定要释放消息,否则内容泄露
4
CCNotificationCenter::sharedNotificationCenter()->removeObserver(
this
,MY_NOTIFICATION);
5
//返回值是int类型,表示释放的监听消息的个数
6
//int ret = CCNotificationCenter::sharedNotificationCenter()->removeAllObservers(this);
7
//CCLog("%d",ret);
8
}
1
//第一个参数是监听消息的对象,第二个参数是消息发来的时候调用的函数,第三个参数消息的名字
2
//第四个参数消息体
3
CCNotificationCenter::sharedNotificationCenter()->addObserver(
this
,
4
callfuncO_selector(TestScene::getNotification),MY_NOTIFICATION,NULL);
0 0
- CCNotificationCenter事件监听器
- CCNotificationCenter处理消息事件
- cocos2dx 事件响应机制 CCNotificationCenter
- CCNotificationCenter
- CCNotificationCenter
- 事件监听器
- 事件监听器
- 事件监听器
- 事件监听器
- 事件监听器
- 事件监听器
- 事件监听器
- 事件监听器
- 事件监听器
- Cocos2d-x CCNotificationCenter 通知中心 自定义消息事件
- BUTTON事件监听器-经典
- 使用事件监听器
- AWT事件及其监听器
- [web安全] 浏览器安全
- opensslBIO系列之4---BIO控制函数介绍
- 信道 频段 带宽 速率 几点总结
- GIS导入3D模型问题总结
- Spring IO 平台参考指南
- CCNotificationCenter事件监听器
- mysql的有序插入研究
- LabVIEW之生产者/消费者模式--队列操作
- openssl之BIO系列之5---CallBack函数及其控制
- TNS-12564: TNS:connection refused
- Hadoop的hdfs的配置参数详解
- openssl之BIO系列之6---BIO的IO操作函数
- 学习日记-C语言数据类型
- Redis 事务