Egret事件机制

事件的流程

Egret事件机制包含四个步骤:注册侦听器发送事件侦听事件移除侦听器。且是按顺序执行。

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

public addEventListener(type:string, listener:Function, thisObject:any, useCapture:boolean = false, priority:number = 0)
  • type:事件类型,必选。

  • listener:用来处理事件的侦听器,必选。

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

  • useCapture: 确定侦听器是运行于捕获阶段还是运行于冒泡阶段,可选。设置为 true,则侦听器只在捕获阶段处理事件,而不在冒泡阶段处理事件。设置为 false,则侦听器只在冒泡阶段处理事件。

  • priority: 事件侦听器的优先级,可选。优先级由一个带符号的整数指定。数字越大,优先级越高。优先级为 n 的所有侦听器会在优先级为 n -1 的侦听器之前得到处理。如果两个或更多个侦听器共享相同的优先级,则按照它们的添加顺序进行处理。默认优先级为 0。

示例:

this.timer.addEventListener(egret.TimerEvent.TIMER,this.timerInterver,this);

this.timer.addEventListener(egret.TimerEvent.TIMER_COMPLETE,this.timerComplete,this);

this.imageButton.touchEnabled = true;
this.imageButton.addEventListener(egret.TouchEvent.TOUCH_TAP,this.onButtonClicked,this,true);

this.sprite.touchEnabled = true;
this.sprite.addEventListener(egret.TouchEvent.TOUCH_TAP,this.onTouchEnd,this,true);

上面示例中,分别为计时器Timer的interver间隔触发监听,Timer完成的监听触发,imageButton点击监听,sprite容器点击监听。

触摸事件

Egret中有专门的触摸事件类,使用触摸事件时,默认需要打开显示对象的触摸开关,即将touchEnabled设置为true

你可能感兴趣的:(Egret事件机制)