cocos2dx源码分析:事件监听器EventListener
来源:互联网 发布:上证指数收盘价数据 编辑:程序博客网 时间:2024/05/21 06:25
目前cocos2dx中有8种事件
enum class Type { UNKNOWN, TOUCH_ONE_BY_ONE, TOUCH_ALL_AT_ONCE, KEYBOARD, MOUSE, ACCELERATION, FOCUS, GAME_CONTROLLER, CUSTOM };
TOUCH_ONE_BY_ONE是点击事件,一次处理一个点,也就是单点触摸,实现类为EventListenerTouchOneByOne,可以设置4个事件回调函数:
typedef std::function<bool(Touch*, Event*)> ccTouchBeganCallback; typedef std::function<void(Touch*, Event*)> ccTouchCallback; ccTouchBeganCallback onTouchBegan; ccTouchCallback onTouchMoved; ccTouchCallback onTouchEnded; ccTouchCallback onTouchCancelled;
TOUCH_ALL_AT_ONCE也是点击事件,但是一次可以处理多个点,也就是多点触摸,实现类为EventListenerTouchAllAtOnce,可以设置4个事件回调函数
typedef std::function<void(const std::vector<Touch*>&, Event*)> ccTouchesCallback; ccTouchesCallback onTouchesBegan; ccTouchesCallback onTouchesMoved; ccTouchesCallback onTouchesEnded; ccTouchesCallback onTouchesCancelled;
KEYBOARD用来监听键盘事件,需要有键盘的设备才能触发,实现类为EventListenerKeyboard,可以设置按键按下和按键松开回调函数
std::function<void(EventKeyboard::KeyCode, Event*)> onKeyPressed;std::function<void(EventKeyboard::KeyCode, Event*)> onKeyReleased;
MOUSE用来监听鼠标事件,需要有鼠标的设备才能触发,实现类为EventListenerMouse,可以设置4个回调函数
std::function<void(EventMouse* event)> onMouseDown;std::function<void(EventMouse* event)> onMouseUp;std::function<void(EventMouse* event)> onMouseMove;std::function<void(EventMouse* event)> onMouseScroll;
ACCELERATION响应加速器事件,实现类为EventListenerAcceleration,可以设置一个回调函数
std::function<void(Acceleration*, Event*)> onAccelerationEvent;
FOCUS响应ui焦点改变事件,实现类为EventListenerFocus,回调函数为
std::function<void(ui::Widget*, ui::Widget*)> onFocusChanged;
CUSTOM响应自定义的事件,实现类为EventListenerCustom,回调函数为
std::function<void(EventCustom*)> _onCustomEvent;
GAME_CONTROLLER,ios和android才有
使用事件监听器时,先创建具体的监听器
auto listener = EventListenerTouchOneByOne::create();
然后设置监听器的回调函数
listener->onTouchBegan = CC_CALLBACK_2(HelloWorld::onTouchBegan1, this);
listener->onTouchMoved = CC_CALLBACK_2(HelloWorld::onTouchMoved, this);
listener->onTouchEnded = CC_CALLBACK_2(HelloWorld::onTouchEnded, this);
最后添加到派发器中
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
此后,如果有对应的事件发生,监听器回调函数就会被调用
- cocos2dx源码分析:事件监听器EventListener
- cocos2dx事件监听器
- cocos2dx源码分析:事件派发器EventDispatcher
- cocos2dx-3.0 : EventListener
- Spring Boot启动过程源码分析(二)事件监听器
- springboot源码分析14-事件发布机制以及应用监听器
- springboot源码分析14-事件发布机制以及应用监听器
- js玩具——UI组件:EventListener 事件监听器基础接口
- Cocos2dx引擎9-注册事件监听器
- Cocos2dx 用户事件 事件监听器 事件分发器
- cocos2dx CCScrollView 源码分析
- cocos2dx-CCControlButton源码分析
- cocos2dx源码分析:ActionManager
- Spring源码解读:EventListener接口
- java所有监听器及常用监听器学习(EventListener)
- EventListener
- EventListener
- cocos2d-x 源码分析 : EventDispatcher、EventListener、Event 源码分析 (新触摸机制,新的NotificationCenter机制)
- VMWare下ubuntu恢复环境变量
- mysql无法启动
- IntelliJ IDEA 常用快捷键
- pip 命令
- oracle数据库对象
- cocos2dx源码分析:事件监听器EventListener
- 前端基础问题整理
- critical sections 临界区(危险区)
- SDOI2010古代猪文 总结
- HTML5 <details> 标签
- UnityRPG系列笔记----3
- chmod: changing permissions of ‘/etc/passwd': Read-only file system
- 关于getScrollx和getScrolly的理解
- tyvj p1939玉蟾宫