鼠标事件响应混乱

  • Creator 版本:2.0.5

  • 目标平台: 模拟器

  • 详细报错信息,包含调用堆栈:

  • 重现方式:

  • 之前哪个版本是正常的 :1.8

  • 手机型号 :

  • 手机浏览器 :

  • 编辑器操作系统 :

  • 编辑器之前是否有其它报错 :

  • 出现概率:100%

  • 额外线索:

说明:
在Canvas下添加节点Node1,Canvas添加脚本Canvas,并添加如下鼠标事件

start () {
    this.node.on(cc.Node.EventType.MOUSE_DOWN, function (event) {
        cc.log("MOUSE DOWN :: event.target.name = " + event.target.name);
    }, this);

    this.node.on(cc.Node.EventType.MOUSE_MOVE, function (event) {
        cc.log("MOUSE MOVE :: event.target.name = " + event.target.name);
    }, this);

    this.node.on(cc.Node.EventType.MOUSE_UP, function (event) {
        cc.log("MOUSE UP :: event.target.name = " + event.target.name);
    }, this);
},

在Node1上添加脚本Node1,并且添加任意鼠标事件,代码如下:
start () {
//切换事件
// this.node.on(cc.Node.EventType.MOUSE_WHEEL, function(event){

    // }, this);

    // this.node.on(cc.Node.EventType.MOUSE_DOWN, function(event){
        
    // }, this);

    this.node.on(cc.Node.EventType.MOUSE_UP, function(event){
        
    }, this);
},

此时在Canvas的MOUSE_DOWN事件中,Canvas与Node1均触发了Canvas的响应事件;并且Canvas的MOUSE_MOVE与MOVE_UP均只响应Node1。

快点来人回复啊,为了防止这种事情发生,只能加各种判断,写的代码太丑了。

请提供可复现问题的demo,加快解决这个问题

因为不清楚你的具体项目环境是怎样的 所以你可以吧项目中的assets文件夹打包成zip文件上传到回复框里。

Empty.rar (555.3 KB)

可以分别测试下鼠标移动、点击、抬起的动作,并且看一下打印信息。

大佬麻烦看一下,最近这问题简直困惑人

把你的困惑再描述一下,你的demo在我看来是表现正常的

我重新说一下我的问题。不知道是原本就是这样设计的还是确实有问题。
有两个节点,分别是ParentNode 和 ChildNode,ChildNode添加在ParentNode上。当这两个节点分别注册了MOUSE_DOWN 和MOUSE_UP事件后。当我点击鼠标时,首先在ChildNode事件回调中响应了事件,之后在ParentNode中分别响应了两次,触发者分别是ChildNode和ParentNode;而当我松开鼠标时,首先在ChildNode事件回调中响应了事件,但是在ParentNode中只响应了一次事件,并且触发者是ParentNode;

以上这种情况相当于我按下鼠标后两个地方响应了三次事件,而抬起鼠标时在两个地方响应了两次事件;

这个问题我们已确定 正在排查中 会尽快处理

1赞

好的,主要是不清楚原本设计思路哪个是对的。

目前这个设计在2.0上是正确 不阻止事件传递的话会出现穿透 如果让事件穿透可以用其他方法自行阻止事件传递