Se supone que la fase de bubbling de los eventos en flex es en la que el evento recorre toda la jerarquía de componentes hasta llegar a la aplicación principal, buscando listeners, pero no puedo hacer que eso pase.
Aquí el código de mi componente:
Código Flex :
<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300"
creationComplete="group1_creationCompleteHandler()">
<fx:Script>
<![CDATA[
private function group1_creationCompleteHandler():void
{
dispatchEvent(new Event("mi_evento",true));
}
]]>
</fx:Script>
</s:Group>
y esta la aplicación:
Código Flex :
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
creationComplete="creationCompleteHandler()">
<fx:Script>
<![CDATA[
import componentes.OptsWindow;
import mx.managers.PopUpManager;
private var ventana:OptsWindow;
protected function creationCompleteHandler():void
{
addEventListener("mi_evento",llegaEvento);
ventana = new OptsWindow();
PopUpManager.addPopUp(ventana,this);
PopUpManager.centerPopUp(ventana);
}
private function llegaEvento(event:Event):void
{
// TODO Auto-generated method stub
trace("llega el evento desde el componente");
}
]]>
</fx:Script>
</s:Application>
Pero el evento no se propaga, he visto la documentación y en todas partes dice que el bubbling debe soportar esa propagación y que flex revisa la aplicación principal a ver si hay un listener para el evento que fue disparado, no entiendo porqué no hace nada.
Nota: Yo se que puedo añadir el listener al componente y funcionará, se que puedo disparar el evento hacia el parentApplication y también funcionará, pero obviamente la intención no es esa, quiero que la aplicación pueda disparar eventos sin que sepa o le importe si hay un componente escuchando y viceversa, todo eso sin usar singletons.
