egret中使用addEventListener是要添加参数使用bind
private mainFunction(){
let param1 = '参数1';
let param2 = '参数2';
let param3 = '参数3';
Btn.addEventListener(egret.TouchEvent.TOUCH_TAP, this.clickFunction.bind(this, param1, param2, param3 ,false), this);
}
private clickFunction(param1, param2, param3){
console.log(param1);
console.log(param2);
console.log(param3);
}
*bind(this,params,false) 中的 this 指向的是接受参数的函数对象,所以如果是不同类间调用的话注意写成 类名.getInstance() 或 类名._gameScene (getInstance() 和 _gameScene是自己定义的当前对象的this)
在 addEventListener() 下使用的 bind() 会出现 removeEventListener() 失效的问题,所以如果只是点击一次的话使用 once() 来替代 addEventListener()
once() 用法跟 addEventListener() 相同,不同的是 once() 只监听一次,一次后失效,不需要 removeEventListener()
private mainFunction(){
let param1 = '参数1';
let param2 = '参数2';
let param3 = '参数3';
Btn.once(egret.TouchEvent.TOUCH_TAP, this.clickFunction.bind(this, param1, param2, param3 ,false), this);
}
private clickFunction(param1, param2, param3){
//此函数只能触发一次,想多次出发的话再次调用 this.mainFunction();
//this.mainFunction();
console.log(param1);
console.log(param2);
console.log(param3);
}