触摸事件

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);
     },

Cocos Creator cc.Node.点击事件的更多相关文章

  1. Cocos Creator cc.Event点击触摸事件详解

    cc.Event事件请不要直接创建 cc.Event 对象,因为它是一个抽象类,请创建 cc.Event.EventCustom 对象来进行派发. cc.Class({extends: cc.Comp ...

  2. Cocos Creator cc.Button (脚本事件内容)

    cc.Class({extends: cc.Component,properties: {}, onLoad: function () { var clickEventHandler = new cc ...

  3. Cocos Lua的Touch 点击事件添加

    两种方式: -- 触摸开始 local function onTouchBegan(touch, event) return true end -- 触摸结束 local function onTou ...

  4. Cocos Creator与VS Code整合代码提示问题

    Cocos Creator与VS Code整合开发配置 在Cocos Creator中依次点击下面框中的菜单 VS Code工作流 配置Cocos Creator的默认编辑器 Cocos Creato ...

  5. <7>Cocos Creator 节点 cc.Node

    1.简介 节点(cc.Node)是渲染的必要组成部分.所有需要在游戏场景中显示的内容都必须是节点或者依附于节点之上.节点负责控制显示内容的位置.大小.旋转.缩放.颜色等信息. 2.节点属性 1: na ...

  6. Cocos Creator 触摸点击事件

    触摸事件// 使用枚举类型来注册枚举对象定义 对应的事件名 事件触发的时机cc.Node.EventType.TOUCH_START 'touchstart' 当手指触点落在目标节点区域内时cc.No ...

  7. cocos creator 事件

    cocos creator 事件 在做一个消除类游戏时,需要对点击的方块做出响应.代码很简单,可背后的原理还多着呢. 1. 普通节点注册click事件 在cc中如果需要相应click事件,需要为该节点 ...

  8. Cocos Creator学习五:触摸和重力传感响应事件

    1.移动设备上主要涉及触摸响应事件以及重力传感响应事件的处理. 事件主要分两类: 针对节点事件处理的节点响应事件cc.Node.EventType(主要是触摸响应事件和鼠标响应事件): 针对全局系统事 ...

  9. Cocos Creator学习四:按钮响应事件

    1.方法一:通过编辑器对cc.Button的属性进行拖放操作进行控制 (1)创建脚本BtnClick1.js,增加btnClick1函数,然后拖放到Canvas节点中(记得拖放,否则下面步骤将找不到对 ...

随机推荐

  1. Git Pro深入浅出(三)

    七.自己定义Git 前面已经阐述了Git基本的运作机制和使用方式,介绍了很多Git提供的工具来帮助你简单且有效地使用它.本部分将演示怎样借助Git的一些重要的配置方法和钩子机制,来满足自己定义的需求. ...

  2. go module下golang.org如何处理被墙

    一.系统提示 go: golang.org/x/sys@v0.0.0-20180905080454-ebe1bf3edb33: unrecognized import path "golan ...

  3. hdoj:2072

    单词数 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  4. Android开发怎么让自己的APP UI漂亮、大方(配色篇二)

    我们在没有效果图的app开发中有一件事情肯定很头疼:一个按钮的调色改过来改过去,还是很难看,最终只能暂时作罢,浪费了大量的开发时间和精力.开发规范篇见Android开发怎么让自己的APP UI漂亮.大 ...

  5. .NET Core Session的使用方法

    刚使用.NET Core会不习惯,比如如何使用Session:不仅需要引用相应的类库,还需要在Startup.cs里进行注册. 1.在你的项目上基于NuGet添加: install-package M ...

  6. 新内容转入github

    所有新内容已经转入 https://github.com/honggzb/Study-General https://github.com/honggzb/Study2016

  7. yii2 緩存

    1.Yii框架的缓存 主要就是“memcache” 和 “cache”两种 Yii的自带缓存都继承CCache 类, 在使用上基本没有区别 2.使用方法 (1)在config配置文件main.php文 ...

  8. 让mysql 支持 emoji 表情

    1.数据库配置 [client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] ch ...

  9. [原]Docker-issue(1) image name 显示为 <none>

    问题:今天发现重新上传新的image的时候覆盖了原来的镜像后,REPOSITORY 就变为了 <none> ,如下图 解决办法: 使用tag重新命名image 问题解决:

  10. windows上,任务管理器中,进程命令行太长怎么办

    一.前言 在windows上,有时候需要查看进程命令行,但是有的进程的命令行太长了,很难看全 此时,可以使用下面的方法解决(红框改为自己要查看的进程即可): C:\Users\Gaoyu>wmi ...