跳到主要内容

egret.Event

   egret

   public class Event

继承    egret.Event → egret.HashObject

子类    egret.FocusEvent,egret.GeolocationEvent,egret.HTTPStatusEvent,egret.IOErrorEvent,egret.MotionEvent,egret.OrientationEvent,egret.ProgressEvent, egret.StageOrientationEvent,egret.TextEvent,egret.TimerEvent,egret.TouchEvent,RES.ResourceEvent,eui.CollectionEvent,eui.ItemTapEvent, eui.PropertyEvent,eui.UIEvent,egret.MovieClipEvent

Event 类作为创建事件实例的基类,当发生事件时,Event 实例将作为参数传递给事件侦听器。Event 类的属性包含有关事件的基本信息,例如事件的类型或者是否可以取消事件的默认行为。对于许多事件(如由 Event 类常量表示的事件),此基本信息就足够了。但其他事件可能需要更详细的信息。例如,与触摸关联的事件需要包括有关触摸事件的位置信息。您可以通过扩展 Event 类(TouchEvent 类执行的操作)将此类其他信息传递给事件侦听器。Egret API 为需要其他信息的常见事件定义多个 Event 子类。与每个 Event 子类关联的事件将在每个类的文档中加以介绍。Event 类的方法可以在事件侦听器函数中使用以影响事件对象的行为。某些事件有关联的默认行为,通过调用 preventDefault() 方法,您的事件侦听器可以取消此行为。可以通过调用 stopPropagation() 或 stopImmediatePropagation() 方法,将当前事件侦听器作为处理事件的最后一个事件侦听器。

公共属性

属性
ACTIVATE : string
[静态]游戏激活
ADDED : string
[静态]将显示对象添加到显示列表中时调度
ADDED_TO_STAGE : string
[静态]在将显示对象直接添加到舞台显示列表或将包含显示对象的子树添加至舞台显示列表中时调度
CHANGE : string
[静态]属性值或状态发生改变
CHANGING : string
[静态]属性值或状态即将发生改变,通常是按钮的选中状态,或者列表的选中项索引改变
CLOSE : string
[静态]Event.CLOSE 常量定义 close 事件对象的 type 属性的值
COMPLETE : string
[静态]网络请求加载完成
CONNECT : string
[静态]Event.CONNECT 常量定义 connect 事件对象的 type 属性的值
DEACTIVATE : string
[静态]取消激活
ENDED : string
[静态]动画声音等播放完成
ENTER_FRAME : string
[静态][广播事件] 进入新的一帧,监听此事件将会在下一帧开始时触发一次回调
FOCUS_IN : string
[静态]TextInput实例获得焦点
FOCUS_OUT : string
[静态]TextInput实例失去焦点
LEAVE_STAGE : string
[静态]Event.LEAVE_STAGE 常量定义 leaveStage 事件对象的 type 属性的值
LOOP_COMPLETE : string
[静态]循环完成
REMOVED : string
[静态]将要从显示列表中删除显示对象时调度
REMOVED_FROM_STAGE : string
[静态]在从显示列表中直接删除显示对象或删除包含显示对象的子树时调度
RENDER : string
[静态]渲染事件,监听此事件将会在本帧末即将开始渲染的前一刻触发回调,这是一个广播事件,可以在任何一个显示对象上监听,无论它是否在显示列表中
RESIZE : string
[静态]舞台尺寸或UI组件尺寸发生改变
SOUND_COMPLETE : string
[静态]Event.SOUND_COMPLETE 常量定义 在声音完成播放后调度
bubbles : boolean
表示事件是否为冒泡事件
cancelable : boolean
表示是否可以阻止与事件相关联的行为
currentTarget : any
当前正在使用某个事件侦听器处理 Event 对象的对象
data : any
与此事件对象关联的可选数据
eventPhase : number
事件流中的当前阶段
target : any
事件目标
type : string
事件的类型

公共方法

方法
Event(type:string,bubbles:boolean,cancelable:boolean,data:any)
创建一个作为参数传递给事件侦听器的 Event 对象
create(EventClass:{new(type:string,bubbles?:boolean,cancelable?:boolean):T;eventPool?:egret.Event[]},type:string,bubbles:boolean,cancelable:boolean):T
[静态]从对象池中取出或创建一个新的事件实例
dispatchEvent(target:egret.IEventDispatcher,type:string,bubbles:boolean,data:any):boolean
[静态]使用指定的 EventDispatcher 对象来抛出 Event 事件对象
isDefaultPrevented():boolean
检查是否已对事件调用 preventDefault() 方法
preventDefault():void
如果可以取消事件的默认行为,则取消该行为
release(event:egret.Event):void
[静态]释放一个事件对象,并缓存到对象池
stopImmediatePropagation():void
防止对事件流中当前节点中和所有后续节点中的事件侦听器进行处理
stopPropagation():void
防止对事件流中当前节点的后续节点中的所有事件侦听器进行处理

属性详细信息

ACTIVATE

ACTIVATE : string = "activate"

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

游戏激活

ADDED

ADDED : string = "added"

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

将显示对象添加到显示列表中时调度。

ADDED_TO_STAGE

ADDED_TO_STAGE : string = "addedToStage"

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

在将显示对象直接添加到舞台显示列表或将包含显示对象的子树添加至舞台显示列表中时调度。

CHANGE

CHANGE : string = "change"

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

属性值或状态发生改变。通常是按钮的选中状态,或者列表的选中项索引改变。

CHANGING

CHANGING : string = "changing"

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

属性值或状态即将发生改变,通常是按钮的选中状态,或者列表的选中项索引改变。可以通过调用 preventDefault() 方法阻止索引发生更改。

CLOSE

CLOSE : string = "close"

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

Event.CLOSE 常量定义 close 事件对象的 type 属性的值。

COMPLETE

COMPLETE : string = "complete"

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

网络请求加载完成

CONNECT

CONNECT : string = "connect"

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

Event.CONNECT 常量定义 connect 事件对象的 type 属性的值。

DEACTIVATE

DEACTIVATE : string = "deactivate"

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

取消激活

ENDED

ENDED : string = "ended"

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

动画声音等播放完成

ENTER_FRAME

ENTER_FRAME : string = "enterFrame"

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

[广播事件] 进入新的一帧,监听此事件将会在下一帧开始时触发一次回调。这是一个广播事件,可以在任何一个显示对象上监听,无论它是否在显示列表中。

FOCUS_IN

FOCUS_IN : string = "focusIn"

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

TextInput实例获得焦点

FOCUS_OUT

FOCUS_OUT : string = "focusOut"

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

TextInput实例失去焦点

LEAVE_STAGE

LEAVE_STAGE : string = "leaveStage"

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

Event.LEAVE_STAGE 常量定义 leaveStage 事件对象的 type 属性的值。

LOOP_COMPLETE

LOOP_COMPLETE : string = "loopComplete"

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

循环完成。循环最后一次只派发 COMPLETE 事件,不派发 LOOP_COMPLETE 事件。

REMOVED

REMOVED : string = "removed"

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

将要从显示列表中删除显示对象时调度。

REMOVED_FROM_STAGE

REMOVED_FROM_STAGE : string = "removedFromStage"

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

在从显示列表中直接删除显示对象或删除包含显示对象的子树时调度。

RENDER

RENDER : string = "render"

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

渲染事件,监听此事件将会在本帧末即将开始渲染的前一刻触发回调,这是一个广播事件,可以在任何一个显示对象上监听,无论它是否在显示列表中。注意:每次您希望 Egret 发送 Event.RENDER 事件时,都必须调用 stage.invalidate() 方法,由于每帧只会触发一次屏幕刷新,若在 Event.RENDER 回调函数执行期间再次调用stage.invalidate(),将会被忽略。

RESIZE

RESIZE : string = "resize"

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

舞台尺寸或UI组件尺寸发生改变

SOUND_COMPLETE

SOUND_COMPLETE : string = "soundComplete"

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

Event.SOUND_COMPLETE 常量定义 在声音完成播放后调度。

bubbles

bubbles : boolean

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

表示事件是否为冒泡事件。如果事件可以冒泡,则此值为 true;否则为 false。

cancelable

cancelable : boolean

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

表示是否可以阻止与事件相关联的行为。如果可以取消该行为,则此值为 true;否则为 false。

currentTarget

currentTarget : any

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

当前正在使用某个事件侦听器处理 Event 对象的对象。例如,如果用户单击“确定”按钮,则当前目标可以是包含该按钮的节点,也可以是它的已为该事件注册了事件侦听器的始祖之一。

data

data : any

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

与此事件对象关联的可选数据。

eventPhase

eventPhase : number

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

事件流中的当前阶段。此属性可以包含以下数值:捕获阶段 (EventPhase.CAPTURING_PHASE)。目标阶段 (EventPhase.AT_TARGET)。冒泡阶段 (EventPhase.BUBBLING_PHASE)。

target

target : any

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

事件目标。此属性包含目标节点。例如,如果用户单击“确定”按钮,则目标节点就是包含该按钮的显示列表节点。

type

type : string

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

事件的类型。类型区分大小写。

方法详细信息

Event()

public Event(type:string,bubbles:boolean,cancelable:boolean,data:any)

创建一个作为参数传递给事件侦听器的 Event 对象。

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 参数
    • type:string - 事件的类型,可以作为 Event.type 访问。
    • bubbles:boolean - 确定 Event 对象是否参与事件流的冒泡阶段。默认值为 false。
    • cancelable:boolean - 确定是否可以取消 Event 对象。默认值为 false。
    • data:any - 与此事件对象关联的可选数据。

create()

public create(EventClass: {new(type:string,bubbles?:boolean,cancelable?:boolean):T;eventPool?:egret.Event[]},type:string,bubbles:boolean,cancelable:boolean):T

从对象池中取出或创建一个新的事件实例。我们建议您尽可能使用Event.create()和Event.release() 这一对方法来创建和释放事件对象,这一对方法会将事件实例在内部缓存下来供下次循环使用,减少对象的创建次数,从而获得更高的代码运行性能。

注意:若使用此方法来创建自定义事件的实例,自定义的构造函数参数列表必须跟Event类一致。

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 参数
    • EventClass:{new(type:string,bubbles?:boolean,cancelable?:boolean):T;eventPool?:egret.Event[]} - Event类名。
    • type:string - 事件的类型,可以作为 Event.type 访问。
    • bubbles:boolean - 确定 Event 对象是否参与事件流的冒泡阶段。默认值为 false。
    • cancelable:boolean - 确定是否可以取消 Event 对象。默认值为 false。
    //Example:
let event = Event.create(Event,type, bubbles);
event.data = data; //可选,若指定义事件上需要附加其他参数,可以在获取实例后在此处设置。
this.dispatchEvent(event);
Event.release(event);

dispatchEvent()

public dispatchEvent(target:egret.IEventDispatcher,type:string,bubbles:boolean,data:any):boolean

使用指定的 EventDispatcher 对象来抛出 Event 事件对象。抛出的对象将会缓存在对象池上,供下次循环复用。

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 参数
    • target:egret.IEventDispatcher - 派发事件目标
    • type:string - 事件类型
    • bubbles:boolean - 确定 Event 对象是否参与事件流的冒泡阶段。默认值为 false。
    • data:any - 事件data

isDefaultPrevented()

public isDefaultPrevented():boolean

检查是否已对事件调用 preventDefault() 方法。

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 返回:如果已调用 preventDefault() 方法,则返回 true;否则返回 false。

preventDefault()

public preventDefault():void

如果可以取消事件的默认行为,则取消该行为。许多事件都有默认执行的关联行为。例如,如果用户在文本字段中键入一个字符,则默认行为就是在文本字段中显示该字符。由于可以取消 TextEvent.TEXT_INPUT 事件的默认行为,因此您可以使用 preventDefault() 方法来防止显示该字符。您可以使用 Event.cancelable 属性来检查是否可以防止与特定事件关联的默认行为。如果 Event.cancelable 的值为 true,则可以使用 preventDefault() 来取消事件;否则,preventDefault() 无效。

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

release()

public release(event:egret.Event):void

释放一个事件对象,并缓存到对象池。我们建议您尽可能使用Event.create()和Event.release() 这一对方法来创建和释放事件对象,这一对方法会将事件实例在内部缓存下来供下次循环使用,减少对象的创建次数,从而获得更高的代码运行性能。

注意:此方法只能传入由Event.create()创建的事件实例,传入非法对象实例可能会导致报错。

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 参数
    //Example:
let event = Event.create(Event,type, bubbles);
event.data = data; //可选,若指定义事件上需要附加其他参数,可以在获取实例后在此处设置。
this.dispatchEvent(event);
Event.release(event);

stopImmediatePropagation()

public stopImmediatePropagation():void

防止对事件流中当前节点中和所有后续节点中的事件侦听器进行处理。此方法会立即生效,并且会影响当前节点中的事件侦听器。相比之下,在当前节点中的所有事件侦听器都完成处理之前,stopPropagation() 方法不会生效。

注意:此方法不会取消与此事件相关联的行为;有关此功能的信息,请参阅 preventDefault()。

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

stopPropagation()

public stopPropagation():void

防止对事件流中当前节点的后续节点中的所有事件侦听器进行处理。此方法不会影响当前节点 currentTarget 中的任何事件侦听器。相比之下,stopImmediatePropagation() 方法可以防止对当前节点中和后续节点中的事件侦听器进行处理。对此方法的其它调用没有任何效果。可以在事件流的任何阶段中调用此方法。

注意:此方法不会取消与此事件相关联的行为;有关此功能的信息,请参阅 preventDefault()。

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

示例

/*
* 以下示例演示了事件的捕获冒泡。
*/
class EventExample extends egret.DisplayObjectContainer {
public constructor() {
super();
this.rotation = 45;
var left:egret.Shape = new egret.Shape();
left.graphics.beginFill(0xff0000);
left.graphics.drawRect(0,0,100,100);
left.graphics.endFill();
left.x = 100;
this.addChild(left);
left.touchEnabled = true;
left.addEventListener(egret.TouchEvent.TOUCH_TAP, function (event) {
egret.log("点击左侧方块,eventPhase:" + event.eventPhase);
}, left);
var right:egret.Shape = new egret.Shape();
right.graphics.beginFill(0x00ff00);
right.graphics.drawRect(0,0,100,100);
right.graphics.endFill();
right.x = 145;
right.y = -40;
this.addChild(right);
right.touchEnabled = true;
right.addEventListener(egret.TouchEvent.TOUCH_TAP, function (event) {
egret.log("点击右侧方块,eventPhase:" + event.eventPhase);
}, right);
this.touchEnabled = true;
this.addEventListener(egret.TouchEvent.TOUCH_TAP, function (event) {
egret.log("容器冒泡侦听,eventPhase:" + event.eventPhase);
}, this);
this.addEventListener(egret.TouchEvent.TOUCH_TAP, function (event) {
egret.log("容器捕获侦听,eventPhase:" + event.eventPhase);
}, this, true);
}
}