触摸事件

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. office2007每次打开都要配置文件,怎么取消配置(可行)

    取消打开软件进行配置的方法 打开“我的电脑”——“C盘”— —“Program Files\Common Files\ Microsoft Shared\OFFICE12\Office Setup C ...

  2. 解决IE8下opacity属性失效问题,无法隐藏元素

    解决IE8下opacity属性失效问题   由于opacity属性存在兼容性问题,所以在IE8下,用opacity来设置元素的透明度,会失效,从而导致页面的样式问题.在IE8及其更早的浏览器下,我们可 ...

  3. SQL Server CTE 递归查询全解

    在TSQL脚本中,也能实现递归查询,SQL Server提供CTE(Common Table Expression),只需要编写少量的代码,就能实现递归查询,本文详细介绍CTE递归调用的特性和使用示例 ...

  4. NuGet Packages are missing,This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.

    错误内容 This project references NuGet package(s) that are missing on this computer. Use NuGet Package R ...

  5. Git命令行大全

    git branch 查看本地所有分支 git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支 git branch -r 查看远程所有分支 git ...

  6. ActiveQt框架 禁止弹出ActiveX控件交互提示

    重点重写QAxBindable的createAggregate() 参考Qt例子: qtactiveqt\activeqt\opengl\glbox.cpp

  7. Excel带条件求和——SUMIF函数

    老婆求帮忙,问Excel中怎么跨Sheet带条件求和,就是关于sheet2中筛选出来的数据自动合计在sheet3中 . 比如有个sheet2表中的数据如下: 现在要在sheet3中求合计, 通过分析可 ...

  8. lamda表达式和stream

    stream主要用于处理数据,看一下jdk的文档,并且主要处理集合对象: int sum = widgets.stream() .filter(w -> w.getColor() == RED) ...

  9. react 路由导航栏 withRouter

    codesandbox https://codesandbox.io/s/9l6prnyxjy app.js import React, { Component, Fragment } from &q ...

  10. 关于 ubuntu 下 防火墙 ufw的使用

    ufw 是 iptables 的一个语法糖.详细介绍