UNPKG

@robotlegsjs/core

Version:

An architecture-based IoC framework for JavaScript/TypeScript

140 lines (139 loc) 9.62 kB
import { IEvent } from "./IEvent"; export declare const IEventDispatcher: unique symbol; /** * The IEventDispatcher interface defines methods for adding or removing event listeners, checks whether specific types * of event listeners are registered, and dispatches events. Event targets are an important part of the Egret event model. * The event target serves as the focal point for how events flow through the display list hierarchy. When an event * such as a touch tap occurs, an event object is dispatched into the event flow from the root of the display list. * The event object makes a round-trip journey to the event target, which is conceptually divided into three phases: <br/> * the capture phase includes the journey from the root to the last node before the event target's node; the target * phase includes only the event target node; and the bubbling phase includes any subsequent nodes encountered on the * return trip to the root of the display list.In general, the easiest way for a user-defined class to gain event * dispatching capabilities is to extend EventDispatcher. If this is impossible (that is, if the class is already * extending another class), you can instead implement the IEventDispatcher interface, create an EventDispatcher member, * and write simple hooks to route calls into the aggregated EventDispatcher. * * @see egret.EventDispatcher * @version Egret 2.4 * @platform Web,Native * @includeExample egret/events/IEventDispatcher.ts * @language en_US */ export interface IEventDispatcher { /** * Registers an event listener object with an EventDispatcher object so that the listener receives notification of an * event. You can register event listeners on all nodes in the display list for a specific type of event, phase, * and priority.After you successfully register an event listener, you cannot change its priority through additional * calls to on(). To change a listener's priority, you must first call removeEventListener(). Then you can register the * listener again with the new priority level.After the listener is registered, subsequent calls to on() with a * different value for either type or useCapture result in the creation of a separate listener registration. <br/> * When you no longer need an event listener, remove it by calling EventDispatcher.removeEventListener(); otherwise, memory * problems might result. Objects with registered event listeners are not automatically removed from memory because * the garbage collector does not remove objects that still have references.Copying an EventDispatcher instance does * not copy the event listeners attached to it. (If your newly created node needs an event listener, you must attach * the listener after creating the node.) However, if you move an EventDispatcher instance, the event listeners attached * to it move along with it.If the event listener is being registered on a node while an event is also being processed * on this node, the event listener is not triggered during the current phase but may be triggered during a later phase * in the event flow, such as the bubbling phase.If an event listener is removed from a node while an event is being * processed on the node, it is still triggered by the current actions. After it is removed, the event listener is * never invoked again (unless it is registered again for future processing). * * @param type The type of event. * @param listener The listener function that processes the event. This function must accept an event object as * its only parameter and must return nothing, as this example shows: function(evt:Event):void The function can * have any name. * @param thisObject the listener function's "this" * @param useCapture Determines whether the listener works in the capture phase or the bubbling phases. If useCapture * is set to true, the listener processes the event only during the capture phase and not in the bubbling phase. * If useCapture is false, the listener processes the event only during the bubbling phase. To listen for the event * in all three phases, call on() twice, once with useCapture set to true, then again with useCapture set to false. * @param priority The priority level of the event listener. Priorities are designated by a integer. The higher * the number, the higher the priority. All listeners with priority n are processed before listeners of priority n-1. * If two or more listeners share the same priority, they are processed in the order in which they were added. * The default priority is * @see #once() * @see #removeEventListener() * @version Egret 2.4 * @platform Web,Native * @language en_US */ addEventListener(type: string, listener: Function, thisObject?: any, useCapture?: boolean, priority?: number): void; /** * Registers an event listener object with an EventDispatcher object so that the listener receives notification of an * event. Different from the on() method,the listener receives notification only once,and then it will be removed * automatically. * * @param type The type of event. * @param listener The listener function that processes the event. This function must accept an event object as * its only parameter and must return nothing, as this example shows: function(evt:Event):void The function can * have any name. * @param thisObject the listener function's "this" * @param useCapture Determines whether the listener works in the capture phase or the bubbling phases. If useCapture * is set to true, the listener processes the event only during the capture phase and not in the bubbling phase. * If useCapture is false, the listener processes the event only during the bubbling phase. To listen for the event * in all three phases, call on() twice, once with useCapture set to true, then again with useCapture set to false. * @param priority The priority level of the event listener. Priorities are designated by a integer. The higher * the number, the higher the priority. All listeners with priority n are processed before listeners of priority n-1. * If two or more listeners share the same priority, they are processed in the order in which they were added. * The default priority is * @see #on() * @see #removeEventListener() * @version Egret 2.4 * @platform Web,Native * @language en_US */ once(type: string, listener: Function, thisObject?: any, useCapture?: boolean, priority?: number): void; /** * Removes a listener from the EventDispatcher object. If there is no matching listener registered with the * EventDispatcher object, a call to this method has no effect. * * @param type The type of event. * @param listener The listener object to remove. * @param thisObject the listener function's "this" * @param useCapture Specifies whether the listener was registered for the capture phase or the bubbling phases. * If the listener was registered for both the capture phase and the bubbling phases, two calls to removeEventListener() * are required to remove both: one call with useCapture set to true, and another call with useCapture set to false. * @version Egret 2.4 * @platform Web,Native * @language en_US */ removeEventListener(type: string, listener: Function, thisObject?: any, useCapture?: boolean): void; /** * Checks whether the EventDispatcher object has any listeners registered for a specific type of event. This allows * you to determine where an EventDispatcher object has altered handling of an event type in the event flow hierarchy. * To determine whether a specific event type will actually trigger an event listener, use IEventDispatcher.willTrigger(). * The difference between hasEventListener() and willTrigger() is that hasEventListener() examines only the object to * which it belongs, whereas willTrigger() examines the entire event flow for the event specified by the type parameter. * * @param type The type of event. * @returns A value of true if a listener of the specified type is registered; false otherwise. * @see #willTrigger() * @version Egret 2.4 * @platform Web,Native * @language en_US */ hasEventListener(type: string): boolean; /** * Dispatches an event into the event flow. The event target is the EventDispatcher object upon which dispatchEvent() is called. * * @param event The event object dispatched into the event flow. * @returns A value of true unless preventDefault() is called on the event, in which case it returns false. * @version Egret 2.4 * @platform Web,Native * @language en_US */ dispatchEvent(event: IEvent): boolean; /** * Checks whether an event listener is registered with this EventDispatcher object or any of its ancestors for the * specified event type. This method returns true if an event listener is triggered during any phase of the event * flow when an event of the specified type is dispatched to this EventDispatcher object or any of its descendants. * * @param type The type of event. * @returns A value of true if a listener of the specified type will be triggered; false otherwise. * @see #hasEventListener() * @version Egret 2.4 * @platform Web,Native * @language en_US */ willTrigger(type: string): boolean; }