input的事件在chrome调试时监听不到

 input.on(Input.EventType.TOUCH_MOVE,(e:EventTouch)=>{
           console.log("touch-move");
        })
        input.on(Input.EventType.MOUSE_MOVE,(e:EventMouse)=>{
            console.log("mouse-move");
        })

QQ截图20230419174331
看代码只要第一个里面有事件,第二个就不会触发。为什么?


3.7.2 测试,看着正常,touch_move 要点击情况下触发

我用的3.7.0,我下3.7.2试试

input 按道理不应该被阻止,即使我点击的区域有其他已经监听的节点,是不是这样?

猜想是断点调试情况下你没点击成功就已经进入断点函数,直接触发 mouse_move 了?

我升级了引擎还是不行,我在项目引用了fgui,所以在input的事件发送器中多了一个PointerEventDispatcher,然后就InputEventDispatcher就被break了。


@ccclass('Test')
export class Test extends Component {
    
    start() {
        let trans=this.getComponent(UITransform);
        trans.contentSize.set(720,1280);
        let g=this.getComponent(Graphics);
        g.rect(-360,-640,720,1280);
        g.fill();
        this.node.on(Input.EventType.TOUCH_START,()=>console.log("node-touch-start!"));
        this.node.on(Input.EventType.MOUSE_DOWN,()=>console.log("node-mouse-down!"));
        input.on(Input.EventType.TOUCH_START,(e:EventTouch)=>{
            console.log("input-touch-start")
        })
        input.on(Input.EventType.MOUSE_DOWN,(e:EventMouse)=>{
            console.log("input-mouse-down")
        })
    }
}

如果有个全屏的node已经监听了事件,input在监听就不会触发,这样是合理的吗?input不该是全局的吗?额

不合理,应该有个全局的,否则input的意义在哪里?