cocos2d-x学习之菜单与事件,消息触发机制
2014-06-28 14:01
519 查看
cocos2d-x学习之菜单与事件,消息触发机制
(2012-02-28 13:18:15)转载▼
标签: | 分类: 学习 |
1)实现原理
具体实现是:
SelectorProtocol类声明了所有菜单,事件触发的函数原型(虚函数):
virtual void update(ccTime dt) {CC_UNUSED_PARAM(dt);};
virtual void tick(ccTime dt){CC_UNUSED_PARAM(dt);};
virtual void callfunc(){};
virtual void callfunc(CCNode* pSender){CC_UNUSED_PARAM(pSender);};
virtual void callfunc(CCNode* pSender, void* pData){CC_UNUSED_PARAM(pSender);。。};
virtual void menuHandler(CCObject* pSender){CC_UNUSED_PARAM(pSender);};
virtual void eventHandler(CCEvent* pEvent) {CC_UNUSED_PARAM(pEvent);};
然后定义与所有这些函数原型相匹配的函数指针,比如:
typedef void (SelectorProtocol::*SEL_SCHEDULE)(ccTime);
同时定义进行这种类型转换的宏:
#define schedule_selector(_SELECTOR) (SEL_SCHEDULE)(&_SELECTOR)
然后在具体的类里,就可以使用这种回调进行一些事件通知了:
void CCNode::schedule(SEL_SCHEDULE selector, ccTime interval);
比如上面这个,CNode就可以在有具体事件是,调用selector进行回调通知了。
2)使用方法
(以上面的CCNode::schedule为例子)
a.首先要在类里声明与上面列出的某一个触发函数原型一样的函数(返回值,参数要一样,名称可以不一样),然后做具体触发的实现处理;
void Box2DView::tick(ccTime dt)
{
m_test->Step(&settings);
}
b.把该函数当成一个变量一样设置到Node的schedule:
schedule( schedule_selector(Box2DView::tick) );
因为大部分数据类都是从CNode里继承过来的,所以可以直接使用schedule()。而schedule_selector是我们前面提到的进行类型转换的宏
相关文章推荐
- Android 事件触发机制学习
- C# .net微信开发,开发认证,关注触发消息,自动应答,事件响应,自定义菜单
- 菜鸟学习Cocos2d-x 3.x——浅谈事件处理机制
- 【Cocos2d-X开发学习笔记】第22期:事件处理机制之触屏事件
- 事件触发、分发、observer机制----消息总线架构模式(中介者(调停者)设计模式)
- cocos2d-x-3.0学习笔记之用户事件机制
- OSAL的消息机制触发事件流程
- Android 事件触发机制的深入学习
- 【Cocos2d-X开发学习笔记】第24期:事件处理机制之加速度传感器事件
- 事件触发、分发、observer机制----消息总线架构模式(中介者(调停者)设计模式)
- cocos2d-x-3.1 事件分发机制 (coco2d-x 学习笔记七)
- QT学习笔记13消息机制和事件
- 学习CEGUI亟待解决问题二:消息事件传递机制问题
- 【Cocos2d-X开发学习笔记】第22期:事件处理机制之触屏事件
- Cocos2d-x 3.2 学习笔记(九)EventDispatcher事件分发机制
- Cocos2d-x学习笔记(九)-------->Touch事件处理机制
- Cocos2d-x事件分发机制学习笔记 分类: cocos2d代码编写 2015-07-27 18:02 6人阅读 评论(0) 收藏
- Cocos2d-x v3.x 的事件派发机制(消息处理机制CCNotificationCenter)
- Cocos2d-x事件分发机制学习笔记
- cocos2D-x 3.x学习笔记【二】 事件机制入门