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
- 参数
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
- 参数
//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
- 参数
- event:egret.Event
//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);
}
}