2.4.3,节点首先注册了一个事件,node.on(cc.Node.EventType.TOUCH_END,this.correct.bind(this,resolve)),几秒钟后要注销该事件,注册另外一个事件,但是一直无法注销掉之前的回调。要说为啥一定要用.bind(),是为了传递参数。目前不管是off()还是targetOff()都没法注销之前的事件。
各位大佬,有能传参,还能注销事件的方案吗?(捂脸)
2.4.3,节点首先注册了一个事件,node.on(cc.Node.EventType.TOUCH_END,this.correct.bind(this,resolve)),几秒钟后要注销该事件,注册另外一个事件,但是一直无法注销掉之前的回调。要说为啥一定要用.bind(),是为了传递参数。目前不管是off()还是targetOff()都没法注销之前的事件。
各位大佬,有能传参,还能注销事件的方案吗?(捂脸)
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天后自动关闭。不再允许新的回复。