使用bind(),节点无法注销事件

2.4.3,节点首先注册了一个事件,node.on(cc.Node.EventType.TOUCH_END,this.correct.bind(this,resolve)),几秒钟后要注销该事件,注册另外一个事件,但是一直无法注销掉之前的回调。要说为啥一定要用.bind(),是为了传递参数。目前不管是off()还是targetOff()都没法注销之前的事件。

各位大佬,有能传参,还能注销事件的方案吗?(捂脸)

1赞

bind() 方法会创建一个新函数

是的。off()的时候需要去找到这个挂载的函数,bind之后好像找不到这个函数了,除非把这个函数用一个全局变量存起来?

是要存起来

咋存(捂脸)

    let touch = this.touchEnd.bind(this);
    this.node.on(cc.Node.EventType.TOUCH_END, touch)
    this.node.off(cc.Node.EventType.TOUCH_END, touch)

let func1 = this.wrong
let func2 = this.wrong.bind(this)
let func3 = this.wrong.bind(this)

这三个func应该都是不一样的,尤其是2和3,虽然函数逻辑一样,但是它们是两个不同的函数

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。