Vous pouvez le faire si l'événement de "bulles" flash. Lorsque vous décomposez l'événement à partir de Flash, faites ceci:
dispatchEvent(new Event("myEventName", true)); // that 'true' for bubbles, in the constructor
alors vous devriez être en mesure de le capturer dans Flex aucun problème, avec:
addEventListener("myEventName", handler);
... aussi longtemps que addEventListener
est appelé un composant au niveau ou au-dessus du SWFLoader.
Si vous ne pouvez pas modifier le fichier SWF Flash ou il est une boîte noire complète, vous pouvez simplement enregistrer un gestionnaire MouseEvent.CLICK
avec useCapture = true
, et vérifiez si elle est le bouton droit:
swfLoader.addEventListener(MouseEvent.CLICK, swfLoader_clickHandler, true, 0, true);
protected function swfLoader_clickHandler(event:MouseEvent):void
{
if (event.target.name == "some_way_to_identify_the_button")
// do X
}
Espoir cela aide, Lance
@viatroops: hey, cela ne fonctionne pas. J'ai accès à la fla. Le fla exécute cette ligne de code 'dispatchEvent (new Event (" myEvent "), true));' et j'ai un gestionnaire d'événements 'swfloader_completeHandler' sur le SWFLoader dans Flex. Dans cette méthode, j'ai 'swfloader.addEventListener (" myEvent ", nextStepFunction);'. Mais maintenant, quand je clique sur le bouton de sortie dans le fichier SWF (quand il est intégré dans l'application Flex), rien ne se passe. Est-ce que j'ai fait quelque chose de mal? – Aishwar
Essayez-le donc dispatchEvent ressemble à ceci: 'dispatchEvent (new Event (" myEvent ", true));' à la place de 'dispatchEvent (new Event (" myEvent "), true))', et essayez de définir useCapture sur le listener à true, comme ceci: 'addEventListener (" myEventName ", handler, true, 0, true);'. Faites-moi savoir si cela fonctionne. –
@viatroops. Oups, c'était une faute de frappe. Oui, c'est ce que j'avais pour dispatchEvent. J'ai essayé le second addEventListener, et cela n'a pas fonctionné non plus. – Aishwar