cc.Node.事件

简介:

触摸事件

1.触摸事件的类型:START触摸启动,MOVED移动,ENDED弹起来,CANCEL取消;

ENDED和CANCEL区别是ENDED物体内弹起来,CANCEL是在物体外范围弹起。


2.监听触摸事件,node.on(类型,callback,target(回调函数的this),[useCapture])



3.触摸事件,node.on(类型,callback,target(回调函数的this),[useCapture])


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
       //(1)监听触摸事件 向引擎底层注册回调函数
         //当有触摸事件发生等时候,调这个方法
         //cc.Node.EventType.TOUCH_START 触摸开始
         
 
         //(2)回调函数等格式 function(t) t对象是tt.Touch的对象
         //这个对象包含的信息有[触摸信息,事件信息];
         
         //(3)target 目标谁来调等callback 哪个对象来调用等这个callback
         //那就是哪个对象在callback来绑定实例,target就是里面this对象
     
         //最后一个参数默认即可
      onLoad:  function () {
         this .node.on(cc.Node.EventType.TOUCH_START,
             function (t){console.log( "cc.Node.EventType.TOUCH_START " )}, this )
         this .node.on(cc.Node.EventType.TOUCH_MOVE,
             function (t){console.log( "cc.Node.EventType.TOUCH_MOVE " )}, this )
             
         this .node.on(cc.Node.EventType.TOUCH_END,
             function (t){console.log( "cc.Node.EventType.TOUCH_END " )}, this )
             
         this .node.on(cc.Node.EventType.TOUCH_CANCEL,
             function (t){console.log( "cc.Node.EventType.TOUCH_CANCEL " )}, this )
      },



4.如果这时候 不想监听了 就可以通过off来关闭, 但是你的,

callback不要是匿名函数,要用一个函数对象来保存

1
2
3
     on_touch_moved: function (t){
         console.log( "cc.Node.EventType.TOUCH_END " );
     },



5.关闭注册

1
2
     this .node.off(cc.Node.EventType.TOUCH_END,
         this .on_touch_moved , this )




6.移除目标上的所有事件

targetoff(target)




7.cc.Touch

getLocation 获取当前触点位置 做下角(0,0)为起始点

getDelta 获取触点距离上一次事件移动的距离对象,对象包含 x 和 y 属性




8.cc.Touch 同时包含 cc.Event事件

父节点移动那么所有的子节点都移动,那也就是("父节点是包含了

整个子节点的一个整体"),那这个整体其中一个成员收到来一个事件,

这时候这事件会向上传递,就是说你的一个子节点有一个事件发生后, 

父节点是可以收到等,这个就叫做事件等向上传递,事件冒泡。


如果子节点觉得这是一个私有事件,不想向上传递,想挡住这个事件,

stopPropagationImmediate//立即停止事件传递

stopPropagation停止传递当前事件。




9.按键事件

按键分类:按下EventType.KEY_DOWN,弹起KEY_UP

注册键盘事件

注意systemEvent是小写开头,

大写是类, 

小写是全局实例 他的说明是:系统事件单例,方便全局使用.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
      onLoad:  function () {
         //按键被按下
         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){
         //获取按键 每个按键对应一个按键码
         //event对象带有keyCode 按键码
         //按键码在cc.KEY里面定义的
         console.log( "按下" );
         switch (event.KeyCode){
             case  cc.KEY.space:
                 console.log( "空格按下" );
             break ;
         }
     },
     on_key_up:  function (event){
          switch (event.KeyCode){
             case  cc.KEY.space:
                 console.log( "空格弹起" );
             break ;
         }
     },




10.自定义事件

自己定义的事件,比如我要向你发送一个通知.

监听:this.node.on("自定义事件名",function,target,useCapture);

触发(派发事件):emit("事件名",[detail]) 只有自己能收到

冒泡派送:dispatchEvent(new cc.Event.EventCustom("name",是否冒泡传递))

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
onLoad: function (){
         //接收者 
         //事件类型是自定义字符串等 为事件名字
         //回调函数 参数Event.EventCustom的实例
         this .node.on( "pkg_event" , function (e){
             console.log( "pkg_event" );
             //输出自定义事件传过来等 自定义数据
             console.log(e.detail.name);
         }, this );
         //end
         
         //发送者  直接触发事件
         //这种方法不会对事件传播到任何其他对象
         //也就是说这个事件只能传给自己
         //detail Object 事件的详细数据
         //可以传递自定义数据 比如说传一个表
         this .node.emit( "pkg_event" ,{name: "下面" });
         //end
 
     },

如果我们要把这个事件向上发送

1
2
3
4
5
6
7
8
9
         //如果这个事件要向上传递,也就是不只是传给自己
         ////true向上传递 false不向上传递
         var  ea =  new  cc.Event.EventCustom( "pkg_event" , true );
         //自定义数据
         ea.detail = {name: "小王" };
         //指定这个事件向上传递 
         this .node.dispatchEvent(ea);
         
         //end

父节点接收事件 脚本

1
2
3
4
5
6
      onLoad : function () {
         this .node.on( "pkg_event" , function (e){
             console.log( "父节点收到冒泡" );
             console.log(e.detail.name);
         }, this );
      },






 本文转自超级极客51CTO博客,原文链接:http://blog.51cto.com/12158490/2064394,如需转载请自行联系原作者


相关文章
|
4月前
|
存储 设计模式 监控
如何构建自定义 Node.js 事件发射器
如何构建自定义 Node.js 事件发射器
490 2
|
3月前
|
前端开发 JavaScript
Node.js 事件循环:定时任务、延迟任务和 I/O 事件的艺术
Node.js 事件循环:定时任务、延迟任务和 I/O 事件的艺术
Node.js 事件循环:定时任务、延迟任务和 I/O 事件的艺术
|
4月前
|
JavaScript 前端开发 C++
如何构建自定义 Node.js 事件发射器
如何构建自定义 Node.js 事件发射器
33 2
|
10月前
|
Web App开发 存储 JavaScript
Node.js 事件循环和事件派发器
Node.js 事件循环和事件派发器
|
11月前
|
JavaScript 前端开发 API
Node内置模块 【Event事件模块】
Node内置模块 【Event事件模块】
129 0
|
11月前
|
设计模式 JavaScript 索引
Node.js精进(4)——事件触发器
Node.js精进(4)——事件触发器
|
JavaScript
【Node.JS】事件的绑定与触发
【Node.JS】事件的绑定与触发
95 0
【Node.JS】事件的绑定与触发
|
存储 缓存 JavaScript
【Node.js 】开发中遇到的多进程‘keylog‘ 事件以及TLS/SSL的解决学习方案实战
【Node.js 】开发中遇到的多进程‘keylog‘ 事件以及TLS/SSL的解决学习方案实战
【Node.js 】开发中遇到的多进程‘keylog‘ 事件以及TLS/SSL的解决学习方案实战
|
设计模式 JavaScript API
Node.js 回调函数和事件循环
Node.js 回调函数和事件循环
|
JavaScript
Node.js学习笔记之事件循环和callback
简单叙述一下什么是事件循环 还是拿之前的餐厅来举例,我们去点了个番茄炒蛋,服务生告诉后厨做一个番茄炒蛋,张三也去了餐厅,点了个麻辣小龙虾,服务生又告诉后厨做一份麻辣小龙虾,小李也去了,点了个蛋炒饭。