cc.Node—事件响应
触摸事件
1: 触摸事件类型: START, MOVED, ENDED(物体内), CANCEL(物体外);
2: 监听触摸事件: node.on(类型, callback, target(回掉函数的this), [useCapture]);
3: 关闭触摸事件: node.off(类型, callback, target(回掉函数的this), [useCapture]);
4: targetOff (target): 移除所有的注册事件;
5: 回掉函数的参数设置 function(t(cc.Touch))
6: cc.Touch: getLocation返回触摸的位置;getDelta返回距离上次的偏移;
7: cc.Event: stopPropagationImmediate/stopPropagation 停止事件的传递;
8: 事件冒泡: 触摸事件支持节点树的事件冒泡,会从当前前天往上一层一层的向父节点传送;
9: 完成物体跟随手指触摸的案例;
/*
(1) 监听对应的触摸事件: 像引擎底层注册一个回掉函数,当有触摸事件发生的时候掉这个回掉函数;
cc.Node.EventType.TOUCH_START: 触摸开始
cc.Node.EventType.TOUCH_MOVE: 触摸移动
cc.Node.EventType.TOUCH_END: 触摸结束, (物体内部结束)
cc.Node.EventType.TOUCH_CANCEL: 触摸结束, (物体外部结束) (2) 回掉函数的格式 function(t) --> cc.Touch对象触摸事件对象 {触摸信息,事件信息}
call --> this, this指向谁就是这个target;你要绑那个对象作为你回掉函数的this, 可以为空
function () {}.bind(this);
*/
var item = this.node.getChildByName("item"); this.node.on(cc.Node.EventType.TOUCH_START,
function(t) {
console.log("cc.Node.EventType.TOUCH_START called,", t.type);
// this 函数里面的this,
// 停止事件传递
t.stopPropagationImmediate();
}, item); this.node.on(cc.Node.EventType.TOUCH_MOVE, this.on_touch_move, item); this.node.on(cc.Node.EventType.TOUCH_END,
function(t) {
console.log("cc.Node.EventType.TOUCH_END called,", t.type);
},
item); this.node.on(cc.Node.EventType.TOUCH_CANCEL,
function(t) {
console.log("cc.Node.EventType.TOUCH_CANCEL called,", t.type);
},
item); // 移除
this.node.off(cc.Node.EventType.TOUCH_MOVE, this.on_touch_move, this);
// 移除target上所有的注册事件
this.node.targetOff(this);
父级节点监听事件
onLoad: function () {
this.node.on("pkg_event", function(e){
console.log("父级监听事件", e.type, e.detail);
}, this);
按键监听
// (1)向引擎注册一个事件类型的回掉函数,
// (2) 按键时间的类型: cc.SystemEvent.EventType.KEY_DOWN, cc.SystemEvent.EventType.KEY_UP;
// (3) 配置的回掉函数: function(event) {} target, 目标
// (4) 每一个按键,都会对应一个按键码, space, A, B, C, event对象 event.keyCode;
// (5) cc.systemEvent 小写开头,不是大写, 大写SystemEvent类, systemEvent 全局一个实例
onLoad: function () {
// console.log(cc.systemEvent);
// 按键被按下
cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN, this.on_key_down, this); // 按键弹起
cc.systemEvent.on(cc.SystemEvent.EventType.KEY_UP, this.on_key_up, this);
}, on_key_down: function (event) {
console.log('key down:%s', event.keyCode);
}, on_key_up: function (event) {
console.log('key up:', event.keyCode);
},
自定义事件
onLoad: function () {
console.log('this is onload..');
// 接收者
// 事件类型,是你自定义的字符串;
// 回掉函数: function(e) {} e--> cc.Event.EventCustom的实例
this.node.on("pkg_event", function(e){
console.log("自定义事件", e.detail);
}, this);
// end
this.node.emit("pkg_event", { blake: "发射" });
},
start: function () {
console.log('start...');
// 派发者,只能传递给自己,不会向上传递
this.node.emit("pkg_event", {blake: "发射狗子"});
// 派送者,不只是发给自己,发给我们这个体系;
// true/false, true向上传递, false不向上传递
var e = new cc.Event.EventCustom("pkg_event", false);
e.detail = {blake: "派送分发"};
this.node.dispatchEvent(e);
},
cc.Node—事件响应的更多相关文章
- Cocos Creator cc.Node.点击事件
触摸事件 1.触摸事件的类型:START触摸启动,MOVED移动,ENDED弹起来,CANCEL取消; ENDED和CANCEL区别是ENDED物体内弹起来,CANCEL是在物体外范围弹起. 2.监听 ...
- cc.Node—场景树
对于cc.Node我分了四个模块学习: 1.场景树,2.事件响应,3.坐标系统,4.Action的使用:在此记录经验分享给大家. 场景树 1: creator是由一个一个的游戏场景组成,通过代码逻辑来 ...
- 浅谈JavaScript的事件响应
原文出处: Christian Heilmann 译文出处:Chajn Science 每当猴子们问我JavaScript和DOM里啥东西最牛逼时,我都会一巴掌打回去:卧槽还用问么当然是事件响应了 ...
- cc.Node 的坐标空间与ACTION的学习
1.创建二维的向量坐标 //创建向量坐标方法一 let new_pos1 = new cc.Vec2(100, 100); //创建向量坐标方法二 let new_pos2 = cc.v2(200, ...
- C# .net微信开发,开发认证,关注触发消息,自动应答,事件响应,自定义菜单
成为开发者 string[] ArrTmp = { "token", Request["timestamp"], Request["nonce&quo ...
- (转)C# .net微信开发,开发认证,关注触发消息,自动应答,事件响应,自定义菜单
原文地址:http://www.cnblogs.com/qidian10/p/3492751.html 成为开发者 string[] ArrTmp = { "token", Req ...
- node事件循环
Node.js 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高. Node.js 的每一个 API 都是异步的,并作为一个独立线程运行,使用异步函数调用,并处理并发. Node.j ...
- laya的skeleton骨骼动画事件响应问题
创建skeleton节点并绑定MOUSE_DOWN事件后,却始终无法响应.经测试发现如下: skeleton节点在load结束后,其bounds反映了总体的宽高,但是width与height却为0,而 ...
- cc.Node—坐标系统
cc.Vec21: cc.Vec2 二维向量坐标, 表结构{x: 120, y: 120}; cc.v2(x, y) 创建一个二维向量 cc.p() 创建一个二外向量;2: cc.pSub: 向量相减 ...
随机推荐
- 【bzoj3609】[Heoi2014]人人尽说江南好
可以算出合并多少次. #include<algorithm> #include<iostream> #include<cstdlib> #include<cs ...
- web前端和后端的区别
一句话,展示ui相关的就是前端,否则就是后端. 前端语言:javascript.css和html. 后端就是一些服务.
- JS的内存空间
变量对象与引用数据 概念解释 对于基本数据类型Undefined.Null.Boolean.Number.String往往保存在变量对象中 而对于引用数据类型,如Array.String.Object ...
- Codeforces Round #363 (Div. 2)E. LRU
E. LRU time limit per test 2 seconds memory limit per test 256 megabytes input standard input output ...
- clojure学习记录
take 从列表中获取子列表 into a b 把b conj 到a中 (defn count-a-seq [lat] (reduce (fn [x y] (+ x 1)) 0 lat)) red ...
- [NOI 2014] 起床困难综合征
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3668 [算法] 从高位向低位贪心即可 时间复杂度 : O(30N) [代码] #in ...
- xUnit随笔
XUnit入门 1.如果之前安装了xUnit.net Visual Studio Runner扩展包,通过"工具"菜单下的"扩展和更新"先将该扩展包卸载. 2. ...
- TypeError: expected bytes-like object, not str
报错内容:TypeError: expected bytes-like object, not str 例: a = base64.b64encode(temp) 改为: a = base64.b64 ...
- ZOJ3962 2017 E.Seven Segment Display
数码管从某个状态顺序转移N个状态 计算总共有多少个数码管被点亮 N<=10^9 观察数码管的变化规律,有明显的周期和重复,利用这个性质,计算相对于初始状态,某一位上的某个状态重复了多少次,就可以 ...
- JeePlus:代码生成器
ylbtech-JeePlus:代码生成器 1.返回顶部 1. 代码生成器Jeeplus代码生成器可以快速提高你的开发效率代码生成器可以0编码快速开发,通过配置生成数据库,mapper,service ...