egret.TouchEvent
包 egret
类 public class TouchEvent
继承 egret.TouchEvent → egret.Event → egret.HashObject
使用 TouchEvent 类,您可以处理设备上那些检测用户与设备之间的接触的事件。当用户与带有触摸屏的移动电话或平板电脑等设备交互时,用户通常使用手指或指针设备接触屏幕。可使用 TouchEvent类开发响应基本触摸事件(如单个手指点击)的应用程序。使用此类中定义的事件类型创建事件侦听器。注意:当对象嵌套在显示列表中时,触摸事件的目标将是显示列表中可见的最深的可能嵌套对象。此对象称为目标节点。要使目标节点的祖代(祖代是一个包含显示列表中所有目标节点的对象,从舞台到目标节点的父节点均包括在内)接收触摸事件的通知,请对祖代节点使用 EventDispatcher.on() 并将 type 参数设置为要检测的特定触摸事件。
公共属性
属性 |
---|
TOUCH_BEGIN : string [静态]当用户第一次触摸启用触摸的设备时(例如,用手指触摸配有触摸屏的移动电话或平板电脑)调度 |
TOUCH_CANCEL : string [静态]由于某个事件取消了触摸时触发 |
TOUCH_END : string [静态]当用户移除与启用触摸的设备的接触时(例如,将手指从配有触摸屏的移动电话或平板电脑上抬起)调度 |
TOUCH_MOVE : string [静态]当用户触碰设备时进行调度,而且会连续调度,直到接触点被删除 |
TOUCH_RELEASE_OUTSIDE : string [静态]当用户在触摸设备上与开始触摸的不同 DisplayObject 实例上抬起接触点时调度 |
TOUCH_TAP : string [静态]当用户在触摸设备上与开始触摸的同一 DisplayObject 实例上抬起接触点时调度 |
localX : number 事件发生点相对于所属显示对象的水平坐标 |
localY : number 事件发生点相对于所属显示对象的垂直坐标 |
stageX : number 事件发生点在全局舞台坐标中的水平坐标 |
stageY : number 事件发生点在全局舞台坐标中的垂直坐标 |
touchDown : boolean 表示触摸已按下 (true) 还是未按下 (false) |
touchPointID : number 分配给触摸点的唯一标识号 |
公共方法
方法 |
---|
TouchEvent(type:string,bubbles:boolean,cancelable:boolean,stageX:number,stageY:number,touchPointID:number) 创建一个 TouchEvent 对象,其中包含有关Touch事件的信息 |
dispatchTouchEvent(target:egret.IEventDispatcher,type:string,bubbles:boolean,cancelable:boolean,stageX:number,stageY:number,touchPointID:number,touchDown:boolean):boolean [静态]使用指定的EventDispatcher对象来抛出Event事件对象 |
updateAfterEvent():void 如果已修改显示列表,调用此方法将会忽略帧频限制,在此事件处理完成后立即重绘屏幕 |
属性详细信息
TOUCH_BEGIN
TOUCH_BEGIN : string = "touchBegin"
- 支持版本:Egret 2.4
- 运行平台:Web,Native
当用户第一次触摸启用触摸的设备时(例如,用手指触摸配有触摸屏的移动电话或平板电脑)调度。
TOUCH_CANCEL
TOUCH_CANCEL : string = "touchCancel"
- 支持版本:Egret 3.0.1
- 运行平台:Web,Native
由于某个事件取消了触摸时触发。比如 eui.Scroller 在开始滚动后会触发 'TOUCH_CANCEL' 事件,不再触发后续的 'TOUCH_END' 和 'TOUCH_TAP' 事件
TOUCH_END
TOUCH_END : string = "touchEnd"
- 支持版本:Egret 2.4
- 运行平台:Web,Native
当用户移除与启用触摸的设备的接触时(例如,将手指从配有触摸屏的移动电话或平板电脑上抬起)调度。
TOUCH_MOVE
TOUCH_MOVE : string = "touchMove"
- 支持版本:Egret 2.4
- 运行平台:Web,Native
当用户触碰设备时进行调度,而且会连续调度,直到接触点被删除。
TOUCH_RELEASE_OUTSIDE
TOUCH_RELEASE_OUTSIDE : string = "touchReleaseOutside"
- 支持版本:Egret 2.4
- 运行平台:Web,Native
当用户在触摸设备上与开始触摸的不同 DisplayObject 实例上抬起接触点时调度。
TOUCH_TAP
TOUCH_TAP : string = "touchTap"
- 支持版本:Egret 2.4
- 运行平台:Web,Native
当用户在触摸设备上与开始触摸的同一 DisplayObject 实例上抬起接触点时调度。
localX
localX : number
- 支持版本:Egret 2.4
- 运行平台:Web,Native
事件发生点相对于所属显示对象的水平坐标。
localY
localY : number
- 支持版本:Egret 2.4
- 运行平台:Web,Native
事件发生点相对于所属显示对象的垂直坐标。
stageX
stageX : number
- 支持版本:Egret 2.4
- 运行平台:Web,Native
事件发生点在全局舞台坐标中的水平坐标。
stageY
stageY : number
- 支持版本:Egret 2.4
- 运行平台:Web,Native
事件发生点在全局舞台坐标中的垂直坐标。
touchDown
touchDown : boolean = false
- 支持版本:Egret 2.4
- 运行平台:Web,Native
表示触摸已按下 (true) 还是未按下 (false)。
touchPointID
touchPointID : number
- 支持版本:Egret 2.4
- 运行平台:Web,Native
分配给触摸点的唯一标识号
方法详细信息
TouchEvent()
public TouchEvent(type:string,bubbles:boolean,cancelable:boolean,stageX:number,stageY:number,touchPointID:number)
创建一个 TouchEvent 对象,其中包含有关Touch事件的信息
- 支持版本:Egret 2.4
- 运行平台:Web,Native
- 参数
dispatchTouchEvent()
public dispatchTouchEvent(target:egret.IEventDispatcher,type:string,bubbles:boolean,cancelable:boolean,stageX:number,stageY:number,touchPointID:number,touchDown:boolean):boolean
使用指定的EventDispatcher对象来抛出Event事件对象。抛出的对象将会缓存在对象池上,供下次循环复用。
- 支持版本:Egret 2.4
- 运行平台:Web,Native
- 参数
- target:egret.IEventDispatcher - 派发事件目标
- type:string - 事件的类型,可以作为 Event.type 访问。
- bubbles:boolean - 确定 Event 对象是否参与事件流的冒泡阶段。默认值为 false。
- cancelable:boolean - 确定是否可以取消 Event 对象。默认值为 false。
- stageX:number - 事件发生点在全局舞台坐标系中的水平坐标
- stageY:number - 事件发生点在全局舞台坐标系中的垂直坐标
- touchPointID:number - 分配给触摸点的唯一标识号
- touchDown:boolean
updateAfterEvent()
public updateAfterEvent():void
如果已修改显示列表,调用此方法将会忽略帧频限制,在此事件处理完成后立即重绘屏幕。
- 支持版本:Egret 2.4
- 运行平台:Web,Native
示例
/*
* 以下示例演示了事件的捕获冒泡。
*/
class TouchEventExample extends egret.DisplayObjectContainer {
public constructor() {
super();
this.touchEventDemo();
this.touchCancelDemo();
}
private touchEventDemo() {
const container = new egret.Sprite();
this.addChild(container);
container.rotation = 45;
const left: egret.Shape = new egret.Shape();
left.graphics.beginFill(0xff0000);
left.graphics.drawRect(0, 0, 100, 100);
left.graphics.endFill();
left.x = 100;
container.addChild(left);
left.touchEnabled = true;
left.addEventListener(egret.TouchEvent.TOUCH_TAP, function (event) {
egret.log("点击左侧方块,eventPhase:" + event.eventPhase);
}, left);
const 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;
container.addChild(right);
right.touchEnabled = true;
right.addEventListener(egret.TouchEvent.TOUCH_TAP, function (event) {
egret.log("点击右侧方块,eventPhase:" + event.eventPhase);
}, right);
container.touchEnabled = true;
container.addEventListener(egret.TouchEvent.TOUCH_TAP, function (event) {
egret.log("容器冒泡侦听,eventPhase:" + event.eventPhase);
}, this);
container.addEventListener(egret.TouchEvent.TOUCH_TAP, function (event) {
egret.log("容器捕获侦听,eventPhase:" + event.eventPhase);
}, this, true);
}
private touchCancelDemo() {
const scroller = new eui.Scroller();
scroller.x = 250;
const list = new eui.List();
const ac = new eui.ArrayCollection([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]);
list.dataProvider = ac;
list.itemRendererSkinName = `
<e:Skin states="up,down,disabled" minHeight="50" minWidth="100" xmlns:e="http://ns.egret.com/eui">
<e:Image width="100%" height="100%" scale9Grid="1,3,8,8" alpha.disabled="0.5"
source="resource/button_up.png"
source.down="resource/button_down.png"/>
<e:Label text="{data}" top="8" bottom="8" left="8" right="8"
textColor="0xFFFFFF" verticalAlign="middle" textAlign="center"/>
</e:Skin>`;
scroller.viewport = list;
scroller.height = 200;
this.addChild(scroller);
scroller.addEventListener(egret.TouchEvent.TOUCH_BEGIN, () => { egret.log("111 Scroller Begin"); }, this);
list.addEventListener(egret.TouchEvent.TOUCH_BEGIN, () => { egret.log("111 List Begin"); }, this);
scroller.addEventListener(egret.TouchEvent.TOUCH_END, () => { egret.log("222 Scroller END"); }, this);
list.addEventListener(egret.TouchEvent.TOUCH_END, () => { egret.log("222 List END"); }, this);
scroller.addEventListener(egret.TouchEvent.TOUCH_TAP, () => { egret.log("33 Scroller Tap"); }, this);
list.addEventListener(egret.TouchEvent.TOUCH_TAP, () => { egret.log("33 List Tap"); }, this);
//scroller 滚动后会触发 touchCancel 事件
//dispatch touchcancel event after scroller move
scroller.addEventListener(egret.TouchEvent.TOUCH_CANCEL, () => { egret.log("44 Scroller cancel"); }, this);
list.addEventListener(egret.TouchEvent.TOUCH_CANCEL, () => { egret.log("44 List cancel"); }, this);
}
}