Cocos Creator 系统内置事件(摘自官方文档)
系统内置事件 如上一篇文档所述, 系统事件遵守通用的注册方式,开发者既可以使用枚举类型也可以直接使用事件名来注册事件的监听器,事件名的定义遵循 DOM 事件标准。 // 使用枚举类型来注册
node.on(cc.Node.EventType.MOUSE_DOWN,function (event) {
console.log('Mouse down');
},this);
// 使用事件名来注册
node.on('mousedown',this);
鼠标事件类型和事件对象鼠标事件在桌面平台才会触发,系统提供的事件类型如下:
鼠标事件(
触摸事件类型和事件对象触摸事件在移动平台和桌面平台都会触发,这样做的目的是为了更好得服务开发者在桌面平台调试,只需要监听触摸事件即可同时响应移动平台的触摸事件和桌面端的鼠标事件。系统提供的触摸事件类型如下:
触摸事件( |
cc.Touch | 与当前事件关联的触点对象 | ||||||||||||||||||||||||||||||||||||||
获取触点的 ID,用于多点触摸的逻辑判断 | ||||||||||||||||||||||||||||||||||||||||
获取触点初始时的位置对象,对象包含 x 和 y 属性 | ||||||||||||||||||||||||||||||||||||||||
需要注意的是,触摸事件支持多点触摸,每个触点都会发送一次事件给事件监听器。
鼠标和触摸事件冒泡
鼠标和触摸事件均支持节点树的事件冒泡,以下图为例:
在图中的场景里,A节点拥有一个子节点B,B拥有一个子节点C。假设开发者对A、B、C都监听了触摸事件。当鼠标或手指在B节点区域内按下时,事件将首先在B节点触发,B节点监听器接收到事件。接着B节点会将事件向其父节点传递这个事件,A节点的监听器将会接收到事件。这就是最基本的事件冒泡过程。
当鼠标或手指在C节点区域内按下时,事件将首先在C节点触发并通知C节点上注册的事件监听器。C节点会通知B节点这个事件,B节点内逻辑会负责检查触点是否发生在自身区域内,如果是则通知自己的监听器,否则什么都不做。紧接着A节点会收到事件,由于C节点完整处在A节点中,所以注册在A节点上的事件监听器都将收到触摸按下事件。以上的过程解释了事件冒泡的过程和根据节点区域来判断是否分发事件的逻辑。
除了根据节点区域来判断是否分发事件外,鼠标和触摸事件的冒泡过程与普通事件的冒泡过程并没有区别。所以,调用event
的stopPropagation
函数可以主动停止冒泡过程。
cc.Node
的其它事件
'position-changed' | 当位置属性修改时 |
当旋转属性修改时 | |
当缩放属性修改时 | |
当宽高属性修改时 | |
当锚点属性修改时 |
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
- PostgreSQL – GROUP BY时间戳值?
- vue教程2-03 vue计算属性的使用 computed
- Ruby on Rails. dispatch.fcgi. dependencies.rb:251:在`
- AJAX和shiro的请求问题
- Vue 3.0 配置
- postgresql – 在CL Postmodern中:col-type用于多对多字段
- flash第一帧加代码时,如果用gotoAndPlay那么第一帧上的代码
- Cocos2d-x学习笔记(十)—— 缓存机制
- 使用DataContractJsonSerializer类将类型实例序列化为JSON字
- 正则表达式 – 使用CFML删除特定HTML标记