事件on()的callback里返回参数如何自定义 新手求助

for(let i:number =0;i<this.itemList.length;i++){
    this.itemList[i].on(SysEventType.CLICK,this.onClickDraw.bind(this,i),this);
}

private onClickDraw(index:number,evet:cc.Event):void{
}

如上 bind后相当于把onClickDraw复制的一份 无法正常off 掉 新手 求执教

最后面那个this有了,就不需要bind(this)了。

我主要是想在on回调里拿到传进去的i 可是这种方式没法成功off掉

bind导致返回了一个新的函数对象, 使用off时传入的函数与之前的bind函数不相等,因此无法把事件移除掉,有两方法供你参考:

  1. on的方法不变,使用this.itemList[i].targetOff(this)来移除,它会移除this.itemList[i]上的所有this上的事件。
  2. on的时候,不用bind, 把i变量放到this.itemList[i]对像上,比如:
this.itemList[i].index = i;