Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Los destinos de eventos son una parte importante del modelo de eventos de Flash® Player y Adobe® AIR®. El destino del evento sirve de punto focal para el flujo del evento de la jerarquía de la lista de visualización. Cuando se produce un evento, como hacer clic con el ratón o presionar una tecla, Flash Player o la aplicación de AIR distribuye un objeto de evento en el flujo del evento desde la raíz de la lista de visualización. A continuación, el objeto de evento se abre camino en la lista de visualización hasta alcanzar el destino de evento. Es entonces cuando comienza su viaje de vuelta por la lista de visualización. Este viaje de ida y vuelta al destino de evento se divide conceptualmente en tres fases: la fase de captura abarca el viaje desde la raíz hasta el último nodo antes del nodo del destino de evento; la fase de destino abarca sólo el nodo de destino de evento y la fase de propagación abarca el resto de los nodos encontrados en el viaje de vuelta hacia la raíz de la lista de visualización.
En general, el modo más sencillo para que una clase definida por el usuario adquiera la capacidad de distribución de eventos es ampliar EventDispatcher. Si no fuera posible (por ejemplo, si la clase ya amplía otra clase), puede implementar la interfaz IEventDispatcher, crear un miembro EventDispatcher y escribir código sencillo para dirigir las llamadas al miembro EventDispatcher añadido.
Método | Definido por | ||
---|---|---|---|
EventDispatcher(target:IEventDispatcher = null)
Agrega una instancia de la clase EventDispatcher. | EventDispatcher | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registra un objeto de detector de eventos con un objeto EventDispatcher, de modo que el detector reciba la notificación de un evento. | EventDispatcher | ||
Distribuye un evento en el flujo del evento. | EventDispatcher | ||
Comprueba si el objeto EventDispatcher tiene detectores registrados para un tipo concreto de evento. | EventDispatcher | ||
Indica si un objeto tiene definida una propiedad especificada. | Object | ||
Indica si hay una instancia de la clase Object en la cadena de prototipo del objeto especificado como parámetro. | Object | ||
Indica si existe la propiedad especificada y si es enumerable. | Object | ||
Elimina un detector del objeto EventDispatcher. | EventDispatcher | ||
Establece la disponibilidad de una propiedad dinámica para operaciones de bucle. | Object | ||
Devuelve la representación de cadena de este objeto, con formato según las convenciones específicas de configuración regional. | Object | ||
Devuelve la representación de cadena del objeto especificado. | Object | ||
Devuelve el valor simple del objeto especificado. | Object | ||
Comprueba si hay registrado un detector de eventos con este objeto EventDispatcher o con cualquiera de sus ascendientes para el tipo de evento concreto. | EventDispatcher |
Evento | Resumen | Definido por | ||
---|---|---|---|---|
[evento broadcast] Se distribuye cuando Flash Player o AIR pasan a estar activos. | EventDispatcher | |||
[evento broadcast] Se distribuye cuando Flash Player o de AIR pasan a estar inactivos. | EventDispatcher |
EventDispatcher | () | Información sobre |
public function EventDispatcher(target:IEventDispatcher = null)
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Agrega una instancia de la clase EventDispatcher.
La clase EventDispatcher suele utilizarse como una clase base, lo que significa que la mayoría de los desarrolladores no necesitan utilizar esta función de constructor. Sin embargo, los desarrolladores avanzados que implementen la interfaz IEventDispatcher necesitarán utilizar este constructor. Si no puede ampliar la clase EventDispatcher y debe implementar la interfaz IEventDispatcher en su lugar, utilice este constructor para agregar una instancia de la clase EventDispatcher.
Parámetrostarget:IEventDispatcher (default = null ) — El objeto de destino para eventos distribuidos en el objeto EventDispatcher. Este parámetro se utiliza cuando una clase que implementa IEventDispatcher agrega la instancia EventDispatcher; es necesario para que el objeto contenido pueda ser el destino de los eventos. No utilice este parámetro en casos sencillos en los que una clase amplía EventDispatcher.
|
addEventListener | () | método |
public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Registra un objeto de detector de eventos con un objeto EventDispatcher, de modo que el detector reciba la notificación de un evento. Puede registrar detectores de eventos en todos los nodos de la lista de visualización para un tipo concreto de evento, fase y prioridad.
Una vez registrado correctamente un detector de eventos, no puede cambiar su prioridad mediante llamadas adicionales a addEventListener()
. Para cambiar la prioridad de un detector, en primer lugar debe llamar a removeListener()
. Seguidamente, puede volver a registrar el nuevo nivel de prioridad.
Recuerde que, una vez registrado el detector, las siguientes llamadas a addEventListener()
con un valor type
o useCapture
distinto tendrán como resultado la creación de un registro independiente del detector. Por ejemplo, si registra primero un detector con useCapture
definido como true
, detectará únicamente durante la fase de captura. Si vuelve a llamar a addEventListener()
con el mismo objeto detector, pero con useCapture
definido como false
, tendrá dos detectores independientes: uno que detecta durante la fase de captura y otro que lo hace durante las fases de destino y de propagación.
No es posible registrar un detector de eventos únicamente para la fase de destino o la fase de propagación. Dichas fases se acoplan durante el registro, ya que la propagación sólo se aplica a los ascendientes del nodo de destino.
Si ya no necesita ningún detector de eventos, elimínelo llamando a removeEventListener()
; de lo contrario, podrían surgir problemas de memoria. Los detectores de eventos no se eliminan automáticamente de la memoria, ya que el recolector de datos innecesarios no elimina el detector siempre que el objeto distribuido exista (a no ser que el parámetro useWeakReference
se establezca en true
).
Al copiar una instancia EventDispatcher no se copian los detectores de eventos asociados. (Si el nodo recién creado necesita un detector de eventos, debe asociarlo después de crear el nodo.) Sin embargo, si mueve una instancia EventDispatcher, los detectores de eventos asociados se moverán también.
Si el detector de eventos se registra en un nodo mientras se procesa un evento en dicho nodo, el detector de eventos no se desencadenará durante la fase actual, aunque sí se desencadenará en una fase posterior del flujo del evento, por ejemplo, en la fase de propagación.
Si un detector de eventos se elimina de un nodo mientras se procesa un evento en dicho nodo, las acciones actual seguirán desencadenándolo. Una vez eliminado, el detector de eventos ya no se vuelve a invocar nunca más (a no ser que se registre de nuevo para otro proceso).
Parámetros
type:String — El tipo de evento.
| |
listener:Function — La función del detector que procesa el evento. Esta función debe aceptar un objeto de evento como parámetro único y no debe devolver ningún valor, tal como indica el siguiente ejemplo:
function(evt:Event):void La función puede tener cualquier nombre. | |
useCapture:Boolean (default = false ) —
Determina si el detector funciona en la fase de captura o en las fases de destino y de propagación. Si useCapture se define como true , el detector procesa el evento sólo durante la fase de captura y no en las fases de destino o propagación. Si useCapture es false , el detector procesa el evento sólo durante la fase de destino o de propagación. Para detectar el evento en las tres fases, llame dos veces a addEventListener , una con useCapture establecido en true y, después, otra con useCapture definido como false .
| |
priority:int (default = 0 ) — El nivel de prioridad del detector de eventos. La prioridad viene designada por un entero de 32 bits sin signo. Cuanto mayor sea el número, mayor será la prioridad. Todos los detectores con prioridad n se procesan antes que los detectores con prioridad n-1. Si dos o más detectores comparten la misma prioridad, se procesarán en el orden en el que se añadieron. La prioridad predeterminada es 0.
| |
useWeakReference:Boolean (default = false ) — Determina si la referencia al detector es fuerte o débil. Una referencia fuerte (valor predeterminado) impide que el detector sea eliminado por el recolector de datos innecesarios. Una referencia débil no lo hace. Las funciones de miembros de clase no están sujetas a la recolección de elementos no utilizados, por lo que |
Emite
ArgumentError — El detector listener especificado no es una función.
|
dispatchEvent | () | método |
public function dispatchEvent(event:Event):Boolean
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Distribuye un evento en el flujo del evento. El destino del evento es el objeto EventDispatcher en el que se llama al método dispatchEvent()
.
Parámetros
event:Event — El objeto de evento distribuido en el flujo del evento. Si el evento está siendo redistribuido, se crea un clon del evento automáticamente. Una vez distribuido un evento, no es posible modificar su propiedad target , por lo que se debe crear una nueva copia del evento para que la redistribución funcione.
|
Boolean — Un valor true si el evento se distribuye correctamente. Un valor false indica un error o que se ha llamado a preventDefault() en el evento.
|
Emite
Error — Se ha alcanzado el límite de recursión de distribución de eventos.
|
hasEventListener | () | método |
public function hasEventListener(type:String):Boolean
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Comprueba si el objeto EventDispatcher tiene detectores registrados para un tipo concreto de evento. De este modo, es posible determinar en qué lugar de la jerarquía del flujo del evento un objeto EventDispatcher ha alterado el control de un tipo de evento. Para determinar si un tipo de evento concreto realmente desencadena un detector de eventos, utilice willTrigger()
.
La diferencia entre hasEventListener()
y willTrigger()
reside en que hasEventListener()
examina sólo el objeto al que pertenece, mientras que willTrigger()
examina todo el flujo del evento especificado por el parámetro type
.
Si se llama a hasEventListener()
desde un objeto LoaderInfo, sólo se tendrán en cuenta los detectores a los que puede acceder el que origina la llamada.
Parámetros
type:String — El tipo de evento.
|
Boolean — Un valor true si está registrado un detector del tipo especificado; false en caso contrario.
|
Elementos de API relacionados
removeEventListener | () | método |
public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Elimina un detector del objeto EventDispatcher. Si no hay ningún detector coincidente registrado con el objeto EventDispatcher, la llamada a este método no surtirá ningún efecto.
Parámetros
type:String — El tipo de evento.
| |
listener:Function — El objeto detector que se va a eliminar.
| |
useCapture:Boolean (default = false ) —
Especifica si el detector se registró para la fase de captura o para las fases de destino y de propagación. Si el detector se registró tanto para la fase de captura como para las fases de destino y de propagación, se necesitarán dos llamadas a removeEventListener() para eliminar ambos detectores: una llamada con useCapture() definido como true y otra llamada con useCapture() establecido en false .
|
willTrigger | () | método |
public function willTrigger(type:String):Boolean
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Comprueba si hay registrado un detector de eventos con este objeto EventDispatcher o con cualquiera de sus ascendientes para el tipo de evento concreto. Este método devuelve true
si se desencadena un detector de eventos durante cualquier fase del flujo del evento cuando se distribuye un evento del tipo especificado a este objeto EventDispatcher o a cualquiera de sus descendientes.
La diferencia entre los métodos hasEventListener()
y willTrigger()
reside en que hasEventListener()
examina sólo el objeto al que pertenece, mientras que el método willTrigger()
examina todo el flujo del evento especificado por el parámetro type
.
Si se llama a willTrigger()
desde un objeto LoaderInfo, sólo se tendrán en cuenta los detectores a los que puede acceder la función que origina la llamada.
Parámetros
type:String — El tipo de evento.
|
Boolean — Un valor true si se desencadena un detector del tipo especificado; de lo contrario, false .
|
activate | Evento |
flash.events.Event
propiedad Event.type =
flash.events.Event.ACTIVATE
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
[evento broadcast] Se distribuye cuando Flash Player o AIR pasan a estar activos. Este evento es un evento de difusión, lo que significa que lo distribuyen todos los objetos EventDispatcher con un detector registrado para este evento. Para obtener más información sobre los eventos de difusión, consulte la clase DisplayObject.
La constanteACTIVATE
define el valor de la propiedad type
de un objeto de evento activate
.
Nota: este evento no tiene ni "fase de captura" ni "fase de propagación", lo que significa que los detectores de eventos deben añadirse directamente a cualquier destino potencial, se encuentre o no en la lista de visualización.
Los dispositivos de AIR para TV nunca distribuyen automáticamente este evento. El usuario puede, sin embargo, distribuirlo manualmente.
Este evento tiene las propiedades siguientes:
Propiedad | Valor |
---|---|
bubbles | false |
cancelable | false ; no hay ningún comportamiento predeterminado que cancelar. |
currentTarget | Objeto que procesa de forma activa el objeto de evento con un detector de eventos. |
target | Cualquier instancia de DisplayObject con un detector registrado para el evento activate . |
Elementos de API relacionados
deactivate | Evento |
flash.events.Event
propiedad Event.type =
flash.events.Event.DEACTIVATE
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
[evento broadcast] Se distribuye cuando Flash Player o AIR pasan a estar inactivos. Este evento es un evento de difusión, lo que significa que lo distribuyen todos los objetos EventDispatcher con un detector registrado para este evento. Para obtener más información sobre los eventos de difusión, consulte la clase DisplayObject.
La constanteEvent.DEACTIVATE
define el valor de la propiedad type
de un objeto de evento deactivate
.
Nota: este evento no tiene ni "fase de captura" ni "fase de propagación", lo que significa que los detectores de eventos deben añadirse directamente a cualquier destino potencial, se encuentre o no en la lista de visualización.
Los dispositivos de AIR para TV nunca distribuyen automáticamente este evento. El usuario puede, sin embargo, distribuirlo manualmente.
Este evento tiene las propiedades siguientes:
Propiedad | Valor |
---|---|
bubbles | false |
cancelable | false ; no hay ningún comportamiento predeterminado que cancelar. |
currentTarget | Objeto que procesa de forma activa el objeto de evento con un detector de eventos. |
target | Cualquier instancia de DisplayObject con un detector registrado para el evento deactivate . |
Elementos de API relacionados
EventDispatcherExample
y CustomDispatcher
, una subclase de EventDispatcher
, para mostrar cómo se crea y se distribuye un evento personalizado. El ejemplo realiza las siguientes tareas:
- El constructor de
EventDispatcherExample
crea una variable localdispatcher
y la asigna a una nueva instancia de CustomDispatcher. - Dentro de
CustomDispatcher
se define un cadena para que el evento se llameaction
y se declara el métododoAction()
. Cuando se llama, este método crea el eventoaction
y lo distribuye utilizandoEventDispatcher.dispatchEvent()
. - La propiedad
dispatcher
se utiliza para añadir el detector de eventosaction
y un método suscriptor asociadoactionHandler()
, que simplemente imprime la información sobre el evento cuando se distribuye. - Se invoca el método
doAction()
, que distribuye el eventoaction
.
package { import flash.display.Sprite; import flash.events.Event; public class EventDispatcherExample extends Sprite { public function EventDispatcherExample() { var dispatcher:CustomDispatcher = new CustomDispatcher(); dispatcher.addEventListener(CustomDispatcher.ACTION, actionHandler); dispatcher.doAction(); } private function actionHandler(event:Event):void { trace("actionHandler: " + event); } } } import flash.events.EventDispatcher; import flash.events.Event; class CustomDispatcher extends EventDispatcher { public static var ACTION:String = "action"; public function doAction():void { dispatchEvent(new Event(CustomDispatcher.ACTION)); } }
Tue Jun 12 2018, 02:12 PM Z