前言

Cocos Creator 中可以通过挂载 BlockInputEvents组件来防止事件穿透,但是如果我们想让它能够事件穿透,官方的文档只字不提。

这个需求也是有场景的,比如我们有两个元素,A和B,B会浮动到A上,从而导致click被B给挡住了,从而A事件无法触发了,这种场景在打地鼠游戏中是常见的。

解决办法

我们需要给挡住的那个元素添加允许事件穿透,用上面的例子,那就是需要给B节点添加一个事件穿透。

import { _decorator, Component, Node } from "cc";
const { ccclass, property } = _decorator;

@ccclass('B')
export class B extends Component {
  onLoad () {
    this.node.on(Node.EventType.MOUSE_DOWN, this.onMouseDown, this);
  }

  onMouseDown(event: EventMouse) {
    event.preventSwallow = true;   //设置为true
  }
}

event设置一个属性为true就行了,这是目前可以使用的办法,指不定官方啥时候又改了,且用且珍惜。

参考

support preventSwallow on EventMouse && EventTouch

分类: Cocos Creator 标签: Cocos Creator事件穿透

评论

全部评论 2

  1. neral
    neral
    FireFox Windows 10
    手机怎么处理, mousedown只能在电脑上
    1. 木灵鱼儿
      木灵鱼儿
      FireFox Windows 10
      @neral主要是通过event对象操作,是什么事件应该无所谓吧

目录