首页 > 编程知识 正文

如何实现事件监听,gui实现事件监听的步骤

时间:2023-05-03 09:17:17 阅读:142949 作者:3275

使用场景H5的游戏开发、跨JS文件的事件拦截和分发、游戏引擎cocoscreator v2.4.2、语言JavaScript的开发。

代码实现/** *事件分发机制EventListener.js @半世2021/05/25 */consteventlistener={ /事件表Regsiter: {},/注册事件(this.Regsiter[name].push ) method;//触发事件fire:function(name ) if ) this.regsiter.hasownproperty (name ) ) lethandlerlist=this.regsiter ) name i handlerList.length; I ) { let handler=handlerList[i]; let args=[]; //参数处理for(letj=1; j arguments.length; j ) (Args.push ) Arguments[j]; //事件回调调用Handler.apply(this,args ) }、//注销事件off:function(name, method ) if ) this.regsiter.hasownproperty ) /因为在同一事件中可能会触发多个处理函数() () ) ) ) ) lethandlerlerlerlity ) for(letI=0; i handlerList.length; I ) ({ console.log )、I,)、handlerList[i]===method ) )循环查找事件并注销; handler list (I )==method (console.log )“注销成功”(if ) handlerList.splice(i ) I,1 ); } } } }}; module.exports=EventListener; 代码分析上面的代码有两个关键点。

1、函数arguments隐藏参数。 函数具有arguments属性,该属性在声明时将调用函数时传递的参数存储为数组。 因此,我们重新处理fire函数时,可以采用根据该属性传递的各种参数。

2、JS的apply ) )方法简单来说就是面向this的,用于改变当前的代码执行环境。 具体来说,可以看我的其他文档。 如何在JavaScript中使用call (,apply ),bind )

登录监听事件/** *游戏主机逻辑控制系统GameManager.js @半世2021/05/21 */leteventlistener=require (' ./event/event listener ) cc.class (extends : cc.com ponent,properties: { }, //life-cycle callbacks 3360//cocos creator附带的声明周期函数onLoad ()此处为某些初始化工作和事件侦听onLoad ) (/this.test _ event _ called ) //Eventlistener.on(test_event2),this.showpanelgameover.bind ) this )错误绑定; 正确丢弃(,//start )、eventOff )、eventOff )、eventlistener.off )、this.test_event_callback; //event listener.off (test _ event2),this.test_event_callback.bind ) this )错误地丢弃(、//update(dt ) 代码分析有两个关键点。

1,bind ) )方法的使用。 函数bind之后,返回值是函数。 必须用变量保存。 否则,以后废弃时,再以bind形式废弃一次。 放弃的是另一个函数。 在事件侦听表中找不到此新生成的函数。

2、函数比较、事件在销毁时进行函数===判断。 这里判断两个函数是否相等的方法是,通过比较两个函数的指针,判断指向的地址(堆栈地址)是否是同一地址。

触发事件/** *游戏主界面逻辑控制类PanelMain.js @半世2021/05/21 */leteventlistener=require (' ./event/event lister cc.class (extends : cc.com ponent,properties: { } )、//life-cycle callbacks 3360//onload )、/声明周期函数SSR (、/备注:事件侦听机制是开发过程中常用的机制,代码量小,但涉及的小知识点多。 有关JS的this绑定以及模块的导出和导入,请参考我的其他帖子。

如何在JavaScript中使用call (,apply ),bind )

node.js模块(module.exports/exports/require ) )。

到此结束。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。