Cocos2d-X的事件分发(3)

Cocos2d-X的事件分发(3),第1张

概述课程概述 “Cocos2d-X的事件分发(3)”课程概述 本节课将讲述事件分发中比较复杂的触摸事件与自定义事件,以及其他的一些事件分发相关的知识。 课程笔记 触摸事件 触摸事件是手持设备最复杂最重要的事件,首先需要区分多个触摸点,其次每个触摸点的事件需要通过多次分发以表示开始、移动、结束、取消等状态。 cocos2d-X使用EventTouch来表示一个触摸事件,每个EventTouch记录了当前 课程概述 “Cocos2d-X的事件分发(3)”课程概述

本节课将讲述事件分发中比较复杂的触摸事件与自定义事件,以及其他的一些事件分发相关的知识。

课程笔记 触摸事件

触摸事件是手持设备最复杂最重要的事件,首先需要区分多个触摸点,其次每个触摸点的事件需要通过多次分发以表示开始、移动、结束、取消等状态。

cocos2d-X使用Eventtouch来表示一个触摸事件,每个Eventtouch记录了当前屏幕上处于相同状态(用EventCode表示)的一组触摸点的集合,由于一个触摸点在不同状态会触发多次事件分发,每个触摸点包含一个唯一的ID,通过touch的getID获取。

Cocos2d-X将触摸事件对应的是订阅者分为两种,一种是EventListenertouchAllAtOnce,表示一个多点触摸事件的订阅者,含有4个回调函数,每个状态的回调函数都包含当前所有处于该状态的触摸点,需要用触摸点的ID来区分每个触摸点。另外一种是EventListenertouchOneByOne,将多个触摸点分为多个事件通知,也含有4个回调函数,其中ontouchBegan必须实现,否则接收不到事件通知。如果返回false,则其他回调函数无法相应,反之亦然。如果屏幕上同时有4个触摸点,则相当于调用了4次EventListenertouchOneByOne,如果不希望这样,可以类似menu那样做一些判断机制。如果希望阻止触摸点向后面订阅者继续分发,可以在ontouchBegan返回true的情况下,调用setSwallowtouches(true)。

在eventdispatcher内部,先触发EventListenertouchOneByOne,然后再触发EventListenertouchAllAtOnce。可以通过ontouchBegan和setSwallowtouches来控制触发的订阅器。如果使用stopPropagation,只会停止一个事件(一个状态)。

触摸点的位置判断,touch事件传入类型为touch的参数,包含getLocation、getPrevIoUsLocation、getStartLocation、getDelta、getLocationInVIEw、getPrevIoUsLocationInVIEw、getStartLocationInVIEw函数。

元素不可见依然可以接收到触摸事件,需要在ontouchBegan的时候检查元素(以及长辈元素)的可见性。

其他系统事件

EventMouse处理鼠标。

EventAcclereation处理重力加速度。

EventKeyBoard处理键盘。

EventFocus处理焦点事件。



原文地址:

http://www.geekfaner.com/cocos2d-x/ReadCocos2dxSourceCode24.HTML

总结

以上是内存溢出为你收集整理的Cocos2d-X的事件分发(3)全部内容,希望文章能够帮你解决Cocos2d-X的事件分发(3)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1055556.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存