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)监听触摸事件 向引擎底层注册回调函数
    	//当有触摸事件发生等时候,调这个方法
    	//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不要是匿名函数,要用一个函数对象来保存

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

5.关闭注册

    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是小写开头,

大写是类,

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

     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",是否冒泡传递))

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

    },

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

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

父节点接收事件 脚本

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

原文地址:http://blog.51cto.com/12158490/2064394

时间: 2024-10-31 11:22:54

cc.Node.事件的相关文章

cocos creator基础-cc.Node(三)坐标空间转换

cc.Vec2 1: cc.Vec2 二维向量坐标, 表结构{x: 120, y: 120}; cc.v2(x, y) 创建一个二维向量 cc.p() 创建一个二维向量(这个2.0被废弃了,用cc.v2替代) 2: cc.pSub: 向量相减 cc.pSub(v1, v2) 被废弃,用v1.sub(v2)替代 3: cc.pAdd: 向量相加; cc. cc.pAdd(v1, v2) 被废弃,用v1.add(v2)替代 4: cc.pLength: 向量长度; cc.pLength(dir)被废

cc.Node.场景树

场景树 1creator是由一个一个的游戏场景组成,通过代码逻辑来控制场景跳转. 2creator场景是一个树形结构 3父节点,子接地那 canvas可以当做根点击,然后再场景里添加精灵 UI等等节点 4cc.Node是整个场景数中的节点对象. 5每个节点只要是场景里面的, 任何一个节点都有一个cc.Node cc.Node属性 1 name:获取节点的名字 2 active:设置节点的可见性 3 position:相对坐标,相对应父节点的位置. 4 rotation:选中,数学是逆时针为正,c

node事件循环

Node.js 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高. Node.js 的每一个 API 都是异步的,并作为一个独立线程运行,使用异步函数调用,并处理并发. Node.js 基本上所有的事件机制都是用设计模式中观察者模式实现. Node.js 单线程类似进入一个while(true)的事件循环,直到没有事件观察者退出,每个异步事件都生成一个事件观察者,如果有事件发生就调用该回调函数.

cc.Node.动作

Action动作 1.Action类是动作命令,我们创建action,然后节点运行action就能够执行Action的动作 2.Action分为两类: (1)即时动作:       瞬时就完成    ActionInstant (2)时间间隔动作:要一段时间才能完成ActionIntervial 3.runAction:节点运行这个action动作. 5.以下是常用action,TO和BY的区别是: TO是目标.  BY是变化. 6.cc.MoveTo cc.MoveTo MoveTo:移动到指

浅析libuv源码-node事件轮询解析(1)

好久没写东西了,过了一段咸鱼生活,无意中想起了脉脉上面一句话: 始终保持自己的竞争力.所以,继续开写! 一般的JavaScript源码看的已经没啥意思了,我也不会写什么xx入门新手教程,最终决定还是啃原来的硬骨头,从外层libuv => node => v8一步步实现原有的目标吧. libuv核心还是事件轮询,前几天从头到尾看了一遍官网的文档,对此有了一些更深的理解. (虽然现在开发用的mac,但是为了衔接前面的文章,所以代码仍旧以windows系统为基础,反正差别也不大) 首先看一眼官网给的

浅析libuv源码-node事件轮询解析(4)

这篇应该能结,简图如下. 上一篇讲到了uv__work_submit方法,接着写了. void uv__work_submit(uv_loop_t* loop, struct uv__work* w, enum uv__work_kind kind, void (*work)(struct uv__work* w), void (*done)(struct uv__work* w, int status)) { // 上篇主要讲的这里 初始化线程池等 uv_once(&once, init_on

node事件循环和消息队列简单分析

node的好处毋庸置疑,事件驱动,异步非阻塞I/O,以及处理高并发的能力深入人心,因此大家喜欢用node做一些小型后台服务或者作为中间层和其他服务配合完成一些大型应用场景. 什么是异步? 异步和同步应该是经常谈的一个话题了.同步的概念很简单,自上而下依次执行,必须等上边执行完下边才会执行.而异步可以先提交一个命令,中间可以去执行别的事务,而当执行完之后回过头来返回之前的任务. 举个栗子: 你很幸运,找了一个漂亮的女朋友,有一天你的女朋友发短信问你晚上看什么电影?但你并不知道看什么,马上打开电脑查

node.js 回调函数、事件循环、EventEmitter ar

异步编程  node.js 编程的直接体现就是回调,异步编程依托于回调来实现: node使用了大量的回调函数,所有API都支持回调函数 .如读取文件等. 这里对不懂线程和异步和同步的稍微解释下这三个名词 . 线程 : 简单的说就是做一件事 . 即执行一段程序代码 .js引擎就是一个单线程 的 处理 方式 .单线程是说 同一时间只能做一件事 . 同步 :就是这件事必须要先做完前面的才能做后面的,否则后面的无法完成. 这就像我们的js代码会从上往下 运行 . 异步 :简单的说就是两个线程,你做你的,

quick-cocos2d-x游戏开发【10】——触摸捕获事件 cc.NODE_TOUCH_CAPTURE_EVENT

如果看过sample中touch的代码,你会发现示例中有一个cc.NODE_TOUCH_CAPTURE_EVENT事件,它和cc.NODE_TOUCH_EVENT触摸事件一样,是引擎级别的事件,我们来看看它和触摸事件的区别. 触摸捕获事件的优先级要比触摸事件要高,换句话说,触摸捕获事件会比触摸事件先响应,并且有权不分发给触摸事件响应. 对于一个完整的捕获+触摸事件,有这么一个流程: 1.捕获阶段,一旦有触摸事件发生,那么首先会触发捕获事件,并且捕获顺序是从zOrder高到低,越在屏幕上方越优先捕