跳到主要内容

egret.TouchEvent

   egret

   public class TouchEvent

继承    egret.TouchEvent → egret.Eventegret.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
  • 参数
    • type:string - 事件的类型,可以作为 Event.type 访问。
    • bubbles:boolean - 确定 Event 对象是否参与事件流的冒泡阶段。默认值为 false。
    • cancelable:boolean - 确定是否可以取消 Event 对象。默认值为 false。
    • stageX:number - 事件发生点在全局舞台坐标系中的水平坐标
    • stageY:number - 事件发生点在全局舞台坐标系中的垂直坐标
    • touchPointID:number - 分配给触摸点的唯一标识号

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);
}
}