Estoy tratando de entender el funcionamiento general y los principios del despacho de eventos en (sub) sistemas controlados por eventos.
Aunque lo he usado en bastantes ocasiones, por ejemplo, Javascript, Flash (Actionscript 2 y 3) e incluso he hecho un sistema simple de envío de eventos en PHP para mí en un momento, nunca he entendido realmente el burbujeo de eventos y / o propagación que bien.
Primera pregunta:
¿el evento burbujea sinónimo de propagación de eventos?
Segunda pregunta:
¿Estoy correcto en mi entendimiento de que cuando un evento "burbujea", esto significa que se "mueve" hacia arriba en la jerarquía de los objetos?
Tercera y más importante pregunta:
si mi comprensión en la pregunta 2 es correcta; ¿Cómo se implementa generalmente este "movimiento" en la jerarquía de objetos?
¿Significa generalmente que el objeto padre "redistribuye" el mismo evento a su padre (hasta que alcanza el objeto raíz)? Y de ser así; ¿Todos estos objetos en la jerarquía necesitan escuchar a sus hijos para estos eventos, o me estoy perdiendo algo del principio vital en mi comprensión sobre el burbujeo de eventos, donde no hay necesidad de permitir que el objeto padre los registre como oyentes de eventos de objetos hijos?
Si pudiera ilustrar estos principios básicos por medio de un pseudocódigo simple, estaría más que agradecido.
fuente
Respuestas:
No. El burbujeo es una forma de propagación de eventos, pero no se puede usar como sinónimo. Propagación es un término general para transmitir un evento. El burbujeo es una estrategia específica de propagación de eventos.
Si. Burbujear significa que sube en la jerarquía, en lugar de hacer un túnel , lo que significa que va desde el elemento superior hacia abajo o enrutamiento , lo que significa que el siguiente objeto para recibir el evento puede ser cualquier cosa que elija.
Muy fácil. En su jerarquía visual, los controles tienen una referencia a su elemento visual principal / superior o pueden obtenerlo en algún lugar. Entonces, cuando capturan un evento, simplemente lo notifican a su padre, que lo notifica a su padre, etc.
El pseudocódigo es así para cualquier control de IU:
Como dijo blueberryfields, no es necesario que sea el padre directo quien reciba el evento a continuación. También podría implementar de esta manera:
fuente
Primera respuesta:
El burbujeo de eventos es un algoritmo específico que guía la propagación de eventos.
Segunda respuesta:
No, el burbujeo no está necesariamente relacionado con ninguna jerarquía. La forma en que los objetos se representan internamente o en otro lugar no importa realmente para que el algoritmo funcione correctamente. Idealmente, cuando un evento burbujea, se expande hacia afuera desde el elemento visible más interno de la pantalla, hasta el elemento visible más externo de la pantalla.
Tercera respuesta:
Los detalles de implementación pueden variar mucho dependiendo de cómo se implementen las partes internas de cada (navegador). El
bubbling
algoritmo depende de las imágenes en la pantalla. Si un elemento de encapsulación es más alto en la jerarquía de herencia que un elemento interno, el burbujeo podría implementarse utilizando mecanismos de herencia estándar en el lenguaje, por ejemplo. Pero eso no es necesariamente cierto: es posible que tenga un mecanismo especializado que pueda interpretar tanto las estructuras internas como su visibilidad en la pantalla, y propagar eventos de acuerdo con el algoritmo mientras ignora la organización interna.fuente