事件侦听器

事件侦听器也就是事件的处理者,负责接收事件携带的信息,并在接收到该事件后执行特定的代码。

Egret中,事件的侦听器必须是一个函数。事件的发送者必须是 egret.EventDispatcher 类或者子类的实例。只有事件发送者才能侦听事件,并且可以 注册侦听器。

侦听事件分为两个部分,第一是建立侦听器,侦听器可以是独立的函数,也可以是某一个对象的方法。第二部是注册侦听器,使用事件发送者的 addEventListener() 将相应的事件分配给侦听器。

public addEventListener(type:string, listener:Function, thisObject:any, useCapture:boolean = false, priority:number = 0)

我们常用的只有前三个参数,后面的两个参数则不太常用。

第一个参数type表示事件类型。

listener就是用来处理事件的侦听器。

priority属性可以设置事件的优先级,该属性为number类型,数字越大,优先级越大,触发事件时优先级越高。

thisObject比较特殊,一般我们填写this。因为TypeScript与JavaScript的this作用域不同,其this指向也会不同。如果不填写this的话,那么编译后的代码会发生错误。 关于this的问题,大家可以学习JavaScript中的原型链。

创建侦听器
一个侦听器必须是函数,它可以是一个独立函数,也可以是一个实例的方法。侦听器必须有一个参数,并且这个参数必须是 Event 类实例或其子类的实例, 同时,侦听器的返回值必须为空(void)。范例代码如下:

listenerName(evt:Event):void {...}

注册侦听器与移除侦听器
只有事件的发送者才可以注册侦听器,事件的发送者必须是 EventDispatcher 类或其子类的实例。移除侦听器也同理,通常情况下,注册侦听器与移除 侦听器都是成对出现。

//注册侦听器
事件发送者.addEventListener(事件类型, 侦听器, this);
//移除侦听器
事件发送者.removeEventListener(事件类型, 侦听器, this);

检测侦听器
如果你需要在逻辑中检测某一个事件发送者是否注册了侦听器,那么你有两个方法可以使用。 一个是 hasEventListener ,另外一个是 willTrigger 。两个方法执行效果相同,都是判断一个事件发送者是否注册了某一个类型的事件。

如果该事件类型已经被注册过,返回 true,如果没有被注册过,返回 false。

事件发送者.hasEventListener(事件类型);

TouchEvent的启动开关
为了避免不必要的性能消耗,Egret对显示对象的TouchEvent侦听有个开关,并默认关闭。 这个开关就是touchEnabled,当需要侦探TouchEvent时,请不要忘记打开这个开关:

显示对象实例.touchEnabled = true;

实际使用过程,如果某些显示对象不再需要侦听TouchEvent,那就及时关闭吧:

显示对象实例.touchEnabled = false;

避免不必要的性能开销

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值