Dans certains cas, je n'arrive pas à obtenir des composants pour recevoir des événements.Flex: Pourquoi ne puis-je pas gérer certains événements?
[modifier]
Pour clarifier les choses, l'exemple de code est juste pour l'amour de démonstration, ce que je vraiment demandé était s'il y avait un emplacement central qu'un auditeur pourrait être ajouté, auquel on peut envoyer de manière fiable les événements à et d'objets arbitraires. J'ai fini par utiliser parentApplication pour envoyer et recevoir l'événement que je devais gérer.
[/ modifier]
Si deux composants ont des parents différents, ou comme dans l'exemple ci-dessous, on est un popup, il semblerait l'événement n'a jamais atteint l'auditeur (voir la méthode « PopUp » pour l'envoi Je pense
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
initialize="init()">
<mx:Script>
<![CDATA[
import mx.controls.Menu;
import mx.managers.PopUpManager;
// Add listeners
public function init():void
{
this.addEventListener("child", handleChild);
this.addEventListener("stepchild", handleStepchild);
}
// Handle the no pop button event
public function noPop(event:Event):void
{
dispatchEvent(new Event("child"));
}
// Handle the pop up
public function popUp(event:Event):void
{
var menu:Menu = new Menu();
var btnMenu:Button = new Button();
btnMenu.label = "stepchild";
menu.addChild(btnMenu);
PopUpManager.addPopUp(menu, this);
// neither of these work...
this.callLater(btnMenu.dispatchEvent, [new Event("stepchild", true)]);
btnMenu.dispatchEvent(new Event("stepchild", true));
}
// Event handlers
public function handleChild(event:Event):void
{
trace("I handled child");
}
public function handleStepchild(event:Event):void {
trace("I handled stepchild");
}
]]>
</mx:Script>
<mx:VBox>
<mx:Button label="NoPop" id="btnNoPop" click="noPop(event)"/>
<mx:Button label="PopUp" id="btnPop" click="popUp(event)"/>
</mx:VBox>
</mx:Application>
de contournements, mais il semble que il devrait y avoir un bus événement central ...
Suis-je manque quelque chose: qui ne fonctionne pas)?
Merci pour la réponse, je « ce » par souci de lisibilité, pour le rendre très clair que chose est en train de faire lequel. –