1 votes

Ajouter des raccourcis clavier à une application Flex

J'ai une application Flex avec beaucoup de composants personnalisés, comme des boutons personnalisés, des comboBoxes, etc. J'essaie d'ajouter des raccourcis clavier à l'application flex. J'essaie d'ajouter des raccourcis clavier à l'application flex. Ce faisant, j'ai ajouté un écouteur de touche vers le bas à l'application pour écouter ctrl+shift combinaison de touches comme ceci :

this.stage.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown);

puis j'envoie un événement personnalisé que tous mes composants personnalisés écoutent :

private function reportKeyDown(event:KeyboardEvent):void
{
    var evtObj:Object = new Object();
    evtObj.keyEvent = event;
    dispatchEvent(new CustomEvent(CustomEvent.SHORTCUT_KEYS_PRESSED, evtObj, true, false));
}

Dans mon composant de bouton personnalisé, j'ai :

this.addEventListener(CustomEvent.SHORTCUT_KEYS_PRESSED, ShortCutKeysHandler, true);

Donc, si je vais ctrl+shift+W alors je veux qu'une instance du bouton personnalisé soit cliquée.

Pour une raison quelconque, l'événement n'est jamais déclenché et n'arrive jamais à l'adresse de l'utilisateur. ShortCutKeysHandler fonction.

Quelqu'un sait-il comment faire ?

2voto

Joel Hooks Points 4673

Je pense que votre événement n'est pas transmis aux auditeurs. Si vous recherchez strictement des événements de clavier et que vous n'avez pas besoin d'une charge utile supplémentaire, il serait peut-être plus efficace de simplement écouter les événements de scène dans les composants qui vous intéressent, ou bien de faire en sorte que la scène envoie votre événement personnalisé et d'utiliser l'option stage.addEventListener dans vos composants intéressés au lieu de this.addEventListener .

En tant que convention, je jamais s'appuient sur le bouillonnement d'événements. Cela obscurcit votre application et crée de l'ambiguïté. Il est préférable de définir explicitement votre structure d'événements pour obtenir un contrôle supplémentaire de votre application et faciliter le débogage.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X