zoukankan      html  css  js  c++  java
  • CocosCreator 事件阻挡和事件穿透

    版本:2.4.3

    事件阻挡

    如下图,现在实现只让白色响应事件,不让红色响应事件。(注意层级关系,红色包含着白色)

     给红色和白色添加点击事件

    this.white.on(cc.Node.EventType.TOUCH_END, ()=>{console.log("white click")},this);
    this.red.on(cc.Node.EventType.TOUCH_END, ()=>{console.log("red click")},this);
    

    点击白色和红色重叠区域,默认情况下白色和红色都会响应点击事件

    给在上方的白色挂上一个Block Input Events组件

    事件会被阻挡,只有白色响应事件,红色不会响应点击事件

     

    事件穿透

    现在实现让红色和白色都能响应事件。 (注意red和white的层级关系,事件阻挡例子里是包含关系,这里是上下层关系)

    点击白色和红色重叠区域,默认情况下只有上方的白色响应事件,红色不会响应点击事件。

    编写一个穿透事件组件,并给上层的白色添加该组件。

    const { ccclass, property } = cc._decorator;
    
    /**
     * 该组件将所属节点内的所有输入事件穿透到下层节点,一般用于上层 UI 的背景。
     * 该组件没有任何 API 接口,直接添加到场景即可生效。
     */
    @ccclass
    export class ThroughInputEvents extends cc.Component {
        onLoad(): void {
            (this.node as any)._touchListener.setSwallowTouches(false);
        }
    }
    

      

    添加穿透事件组件后,再次点击重叠区域,则白色和红色都能响应事件

  • 相关阅读:
    你喜欢使用eclipse+tomcat编程吗?!
    "ERR_GFX_D3D_INIT", GTA5-报错解决办法
    这样写JS的方式对吗?
    webui layout like desktop rich client
    2014年12月23日00:42:54——PS4
    2014年12月20日00:33:14-遮罩+进度条-extjs form.isvalid
    十分钟部署智能合约
    idea clion编译器
    parity 注记词
    go语言学习笔记
  • 原文地址:https://www.cnblogs.com/gamedaybyday/p/13962965.html
Copyright © 2011-2022 走看看