# class TouchEvent

#### package openfl.events

#### extends Event

Available on all platforms

The TouchEvent class lets you handle events on devices that detect user contact with the device(such as a finger on a touch screen). When a user interacts with a device such as a mobile phone or tablet with a touch screen, the user typically touches the screen with his or her fingers or a pointing device. You can develop applications that respond to basic touch events(such as a single finger tap) with the TouchEvent class. Create event listeners using the event types defined in this class. For user interaction with multiple points of contact(such as several fingers moving across a touch screen at the same time) use the related GestureEvent, PressAndTapGestureEvent, and TransformGestureEvent classes. And, use the properties and methods of these classes to construct event handlers that respond to the user touching the device.

Use the Multitouch class to determine the current environment's support for touch interaction, and to manage the support of touch interaction if the current environment supports it.

Note: When objects are nested on the display list, touch events target the deepest possible nested object that is visible in the display list. This object is called the target node. To have a target node's ancestor(an object containing the target node in the display list) receive notification of a touch event, use `EventDispatcher.addEventListener()` on the ancestor node with the type parameter set to the specific touch event you want to detect.

### Constructor

###

`new (type:String, bubbles:Bool = true, cancelable:Bool = false, touchPointID:Int = 0, isPrimaryTouchPoint:Bool = false, localX:Float = 0, localY:Float = 0, sizeX:Float = 0, sizeY:Float = 0, pressure:Float = 0, ?relatedObject:InteractiveObject, ctrlKey:Bool = false, altKey:Bool = false, shiftKey:Bool = false, commandKey:Bool = false, controlKey:Bool = false, timestamp:Float = 0, ?touchIntent:String, ?samples:ByteArray, isTouchPointCanceled:Bool = false)`

Creates an Event object that contains information about touch events. Event objects are passed as parameters to event listeners.

Parameters:

`type` | The type of the event. Possible values are: `TouchEvent.TOUCH_BEGIN`, `TouchEvent.TOUCH_END`, `TouchEvent.TOUCH_MOVE`, `TouchEvent.TOUCH_OUT`, `TouchEvent.TOUCH_OVER`, `TouchEvent.TOUCH_ROLL_OUT`, `TouchEvent.TOUCH_ROLL_OVER`, and `TouchEvent.TOUCH_TAP`.
`bubbles` | Determines whether the Event object participates in the bubbling phase of the event flow.
`cancelable` | Determines whether the Event object can be canceled.
`touchPointID` | A unique identification number(as an int) assigned to the touch point.
`isPrimaryTouchPoint` | Indicates whether the first point of contact is mapped to mouse events.
`relatedObject` | The complementary InteractiveObject instance that is affected by the event. For example, when a `touchOut` event occurs, `relatedObject` represents the display list object to which the pointing device now points.
`ctrlKey` | On Windows or Linux, indicates whether the Ctrl key is activated. On Mac, indicates whether either the Ctrl key or the Command key is activated.
`altKey` | Indicates whether the Alt key is activated (Windows or Linux only).
`shiftKey` | Indicates whether the Shift key is activated.

### Variables

###

`altKey:Bool`

Indicates whether the Alt key is active(`true`) or inactive (`false`). Supported for Windows and Linux operating systems only.

###

`commandKey:Bool`

###

`controlKey:Bool`

###

`ctrlKey:Bool`

On Windows or Linux, indicates whether the Ctrl key is active (`true`) or inactive(`false`). On Macintosh, indicates whether either the Control key or the Command key is activated.

###

`delta:Int`

###

`isPrimaryTouchPoint:Bool`

Indicates whether the first point of contact is mapped to mouse events.

###

`localX:Float`

The horizontal coordinate at which the event occurred relative to the containing sprite.

###

`localY:Float`

The vertical coordinate at which the event occurred relative to the containing sprite.

###

`pressure:Float`

A value between `0.0` and `1.0` indicating force of the contact with the device. If the device does not support detecting the pressure, the value is `1.0`.

###

`relatedObject:InteractiveObject`

A reference to a display list object that is related to the event. For example, when a `touchOut` event occurs, `relatedObject` represents the display list object to which the pointing device now points. This property applies to the `touchOut`, `touchOver`, `touchRollOut`, and `touchRollOver` events.

The value of this property can be `null` in two circumstances: if there is no related object, or there is a related object, but it is in a security sandbox to which you don't have access. Use the `isRelatedObjectInaccessible()` property to determine which of these reasons applies.

###

`shiftKey:Bool`

Indicates whether the Shift key is active(`true`) or inactive (`false`).

###

`sizeX:Float`

Width of the contact area. Only supported on Android(C++ target), in the range of 0-1.

###

`sizeY:Float`

Height of the contact area. Only supported on Android(C++ target), in the range of 0-1.

###

`stageX:Float`

The horizontal coordinate at which the event occurred in global Stage coordinates. This property is calculated when the `localX` property is set.

###

`stageY:Float`

The vertical coordinate at which the event occurred in global Stage coordinates. This property is calculated when the `localY` property is set.

###

`touchPointID:Int`

A unique identification number(as an int) assigned to the touch point.

### Methods

###

`updateAfterEvent ():Void`

Instructs Flash Player or Adobe AIR to render after processing of this event completes, if the display list has been modified.

### Static variables

###

`staticinline read onlyTOUCH_BEGIN:String = "touchBegin"`

Defines the value of the `type` property of a `TOUCH_BEGIN` touch event object.

The dispatched TouchEvent object has the following properties:

###

`staticinline read onlyTOUCH_END:String = "touchEnd"`

Defines the value of the `type` property of a `TOUCH_END` touch event object.

The dispatched TouchEvent object has the following properties:

###

`staticinline read onlyTOUCH_MOVE:String = "touchMove"`

Defines the value of the `type` property of a `TOUCH_MOVE` touch event object.

The dispatched TouchEvent object has the following properties:

###

`staticinline read onlyTOUCH_OUT:String = "touchOut"`

Defines the value of the `type` property of a `TOUCH_OUT` touch event object.

The dispatched TouchEvent object has the following properties:

###

`staticinline read onlyTOUCH_OVER:String = "touchOver"`

Defines the value of the `type` property of a `TOUCH_OVER` touch event object.

The dispatched TouchEvent object has the following properties:

###

`staticinline read onlyTOUCH_ROLL_OUT:String = "touchRollOut"`

Defines the value of the `type` property of a `TOUCH_ROLL_OUT` touch event object.

The dispatched TouchEvent object has the following properties:

###

`staticinline read onlyTOUCH_ROLL_OVER:String = "touchRollOver"`

Defines the value of the `type` property of a `TOUCH_ROLL_OVER` touch event object.

The dispatched TouchEvent object has the following properties:

###

`staticinline read onlyTOUCH_TAP:String = "touchTap"`

Defines the value of the `type` property of a `TOUCH_TAP` touch event object.

The dispatched TouchEvent object has the following properties:

### Inherited Variables

#### Defined by Event

###

`read onlybubbles:Bool`

Indicates whether an event is a bubbling event. If the event can bubble, this value is `true`; otherwise it is `false`.

When an event occurs, it moves through the three phases of the event flow: the capture phase, which flows from the top of the display list hierarchy to the node just before the target node; the target phase, which comprises the target node; and the bubbling phase, which flows from the node subsequent to the target node back up the display list hierarchy.

Some events, such as the `activate` and `unload` events, do not have a bubbling phase. The `bubbles` property has a value of `false` for events that do not have a bubbling phase.

###

`read onlycancelable:Bool`

Indicates whether the behavior associated with the event can be prevented. If the behavior can be canceled, this value is `true`; otherwise it is `false`.

###

`read onlycurrentTarget:Any`

The object that is actively processing the Event object with an event listener. For example, if a user clicks an OK button, the current target could be the node containing that button or one of its ancestors that has registered an event listener for that event.

###

`read onlyeventPhase:EventPhase`

The current phase in the event flow. This property can contain the following numeric values:

- The capture phase(`EventPhase.CAPTURING_PHASE`).
- The target phase(`EventPhase.AT_TARGET`).
- The bubbling phase(`EventPhase.BUBBLING_PHASE`).

###

`read onlytarget:Any`

The event target. This property contains the target node. For example, if a user clicks an OK button, the target node is the display list node containing that button.

###

`read onlytype:String`

The type of event. The type is case-sensitive.

### Inherited Methods

#### Defined by Event

###

`clone ():Event`

Duplicates an instance of an Event subclass.

Returns a new Event object that is a copy of the original instance of the Event object. You do not normally call `clone()`; the EventDispatcher class calls it automatically when you redispatch an event - that is, when you call `dispatchEvent(event)` from a handler that is handling `event`.

The new Event object includes all the properties of the original.

When creating your own custom Event class, you must override the inherited `Event.clone()` method in order for it to duplicate the properties of your custom class. If you do not set all the properties that you add in your event subclass, those properties will not have the correct values when listeners handle the redispatched event.

In this example, `PingEvent` is a subclass of `Event` and therefore implements its own version of `clone()`.

Returns:

A new Event object that is identical to the original.

###

`formatToString (className:String, ?p1:Dynamic, ?p2:Dynamic, ?p3:Dynamic, ?p4:Dynamic, ?p5:Dynamic):String`

###

`isDefaultPrevented ():Bool`

Checks whether the `preventDefault()` method has been called on the event. If the `preventDefault()` method has been called, returns `true`; otherwise, returns `false`.

Returns:

If `preventDefault()` has been called, returns `true`; otherwise, returns `false`.

###

`preventDefault ():Void`

Cancels an event's default behavior if that behavior can be canceled. Many events have associated behaviors that are carried out by default. For example, if a user types a character into a text field, the default behavior is that the character is displayed in the text field. Because the `TextEvent.TEXT_INPUT` event's default behavior can be canceled, you can use the `preventDefault()` method to prevent the character from appearing. An example of a behavior that is not cancelable is the default behavior associated with the Event.REMOVED event, which is generated whenever Flash Player is about to remove a display object from the display list. The default behavior (removing the element) cannot be canceled, so the `preventDefault()` method has no effect on this default behavior. You can use the `Event.cancelable` property to check whether you can prevent the default behavior associated with a particular event. If the value of `Event.cancelable` is true, then `preventDefault()` can be used to cancel the event; otherwise, `preventDefault()` has no effect.

###

`stopImmediatePropagation ():Void`

Prevents processing of any event listeners in the current node and any subsequent nodes in the event flow. This method takes effect immediately, and it affects event listeners in the current node. In contrast, the `stopPropagation()` method doesn't take effect until all the event listeners in the current node finish processing.

Note: This method does not cancel the behavior associated with this event; see `preventDefault()` for that functionality.

###

`stopPropagation ():Void`

Prevents processing of any event listeners in nodes subsequent to the current node in the event flow. This method does not affect any event listeners in the current node(`currentTarget`). In contrast, the `stopImmediatePropagation()` method prevents processing of event listeners in both the current node and subsequent nodes. Additional calls to this method have no effect. This method can be called in any phase of the event flow.

Note: This method does not cancel the behavior associated with this event; see `preventDefault()` for that functionality.

###

`toString ():String`

Returns a string containing all the properties of the Event object. The string is in the following format:

`[Event type=_value_ bubbles=_value_ cancelable=_value_]`

Returns:

A string containing all the properties of the Event object.