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: 向量相减 ...
随机推荐
- 2016/1/14 java生成指定范围的随机数
java生成指定范围的随机数 package edu.sjtu.erplab.io; import java.util.Random; public class RandomTest { public ...
- Linux服务器 /var/spool/clientmqueue 目录下产生大量文件的删除办法
检查linux发现server中的磁盘分区空间超过98%,登录到服务器查看 [root@localhost etc]# df -hFilesystem 容量 已用 可用 已用% 挂载点/dev/hda ...
- PHP MySQL mysql.sock的问题
SQLSTATE[HY000] [2002] No such file or directory 原因是找不到mysql.sock这个文件..一般出现的症状就是能用ip连接mysql.但不能使用loc ...
- visual studio , JavaScript , UnitTest
https://docs.microsoft.com/en-us/visualstudio/cross-platform/tools-for-cordova/debug-test/basic-test ...
- Ubuntu 安装Consolas字体
下载 YaHei.Consolas https://code.google.com/p/uigroupcode/downloads/list 安装 1.创建文件夹 sudo mkdir -p /usr ...
- c#调用oracle存储过程返回数据集
c#调用oracle存储过程返回数据集 2008-12-20 10:59:57| 分类: net|字号 订阅 CREATE OR REPLACE PACKAGE pkg_tableTypeIS ...
- 利用JFreeChart生成时序图(6) (转自 JSP开发技术大全)
利用JFreeChart生成时序图(6) (转自 JSP开发技术大全) 14.6 利用JFreeChart生成时序图 通过JFreeChart插件只能生成普通效果的时序图,利用工厂类ChartFact ...
- 【bug】【userAgent】极速模式与非极速模式存在差异
UC浏览器 Android 极速模式 UC浏览器 Android 非极速模式
- P3713 [BJOI2017]机动训练
这个题简直神仙,求相同路径的平方就等于两个人走相同路径的方案数.然后...暴力搜索+记忆化就行了,比较玄学. 题干: 题目描述 整个岛可以看作一片 n*m 的区域,每个格子有自己的地形. 一条路径由一 ...
- 4.7.3 Canonical LR(1) Parsing Tables
4.7.3 Canonical LR(1) Parsing Tables We now give the rules for constructing the LR(1) ACTION and GOT ...