2010-04-23 5 views
1

Vous pouvez appuyer sur les touches de flex avec la touche espace, mais un client souhaite appuyer sur Entrée au lieu de l'espace. Cela peut être réalisé en programmant chaque bouton, mais cela prendrait beaucoup de temps.En flex, appuyez sur toutes les touches avec la touche de retour

Est-ce que quelqu'un a une idée de comment faire cela en moins de temps?

merci.

Répondre

2

J'ai créé un KeyPressForwarder que « en avant » la presse touche comme un clic:

package com.sophware.backend 
{ 
    import flash.events.IEventDispatcher; 
    import flash.events.KeyboardEvent; 
    import flash.events.MouseEvent; 
    import flash.ui.Keyboard; 

    public class KeyPressForwarder 
    { 

     public function dispatchAsClickEvent(evt:KeyboardEvent):void 
     {  
      if(evt.keyCode == Keyboard.ENTER) 
      {   
       var dispatcher:IEventDispatcher = evt.target as IEventDispatcher; 
       dispatcher.dispatchEvent(new MouseEvent(MouseEvent.CLICK)); 
      }   
     }  

    } 
} 

Et puis configurer une reliure:

<mx:Button 
    id="Name" 
    keyUp="_keyPressForwarder.dispatchAsClickEvent(event)" 
    click="addOrModifyEntry(event)" 
    /> 

Vous pouvez éliminer la classe et il suffit d'utiliser la fonction le concept est générique. Assurez-vous simplement d'avoir un gestionnaire click pour gérer l'événement transféré.

+0

Je suppose qu'il n'y a pas d'échappement ajoutant du code à chaque bouton, merci – sergiogx

+0

Je crois qu'il y a un moyen. Vous devriez pouvoir [Monkey Patch] (http://en.wikipedia.org/wiki/Monkey_patch) classer les boutons (ie copier son fichier source dans votre projet, puis le changer) puis ajouter le redirecteur selon le au dessus. Cela signifie que Flex récupèrera votre classe Button avant de la trouver dans la bibliothèque standard. Ce n'est jamais joli, mais peut travailler pour vous. –

+0

Oui, je pensais à étendre le bouton et à trouver/remplacer tous les boutons, mais je préfère votre idée, je vais essayer d'abord. Merci – sergiogx

Questions connexes