egret addEventListener处理函数添加参数

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);
}

 

你可能感兴趣的:(egret addEventListener处理函数添加参数)