Pregunta

En ActionScript 3, la mayoría de los eventos utilizan la captura / target / modelo de la burbuja, que es bastante popular hoy en día:

  

Cuando se produce un evento, se mueve a través de las tres fases del flujo del evento: la fase de captura, que fluye desde la parte superior de la jerarquía de la lista de visualización al nodo justo antes del nodo de destino; la fase de destino, que comprende el nodo de destino; y la fase de propagación, que fluye desde el nodo posterior al nodo de destino de vuelta hasta la jerarquía de la lista de visualización.

Sin embargo, algunos eventos, como el caso enterFrame de la clase Sprite, no captan O burbuja - que deben suscribirse directamente al objetivo de detectar el evento. La documentación se refiere a ellos como "eventos de difusión." Asumo que esto es por razones de rendimiento, ya que estos eventos se activan constantemente para cada sprite en el escenario y que no quieren tener que lidiar con todo lo que la propagación de eventos superflua.

Quiero enviar mis propios eventos de difusión. Sé que usted puede evitar que un evento de burbujeo (Event.bubbles = false), pero puede deshacerse de la captura así?

¿Fue útil?

Solución

burbuja y fase de captura son las dos partes de todo el mecanismo de propagación. Si se establece en bubbles false, ambos son inexistentes.

Otros consejos

La respuesta de back2dos es mal . En realidad propiedad Event.bubbles no afecta fase de captura.

public class CaptureTextInput extends Sprite
{
  function CaptureTextInput()
  {
    var t:TextField = new TextField();
    t.type = TextFieldType.INPUT;
    addEventListener(TextEvent.TEXT_INPUT, function(event:TextEvent):Void
    {
      trace("captured"); // This event will be triggered properly when you type in text field.
    }, true);
    addChild(t);
  }
}

Si usted deshacerse de las fases de la burbuja y de captura, que no significa que sea un evento de difusión. Lo especial de eventos de difusión es que cuando uno se expiden, cada oyente se dispara independientemente de dónde se encuentren dentro o fuera de la lista de visualización. Si hay una manera de enviar sus propios eventos de difusión, no sé lo que es.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top