Je travaille sur une application et je construis un composant "Clavier" pour cela. Il y a 30 touches sur le clavier et il ne semble pas logique de créer un gestionnaire d'événements pour chaque bouton. Lorsque le bouton est cliqué, son étiquette doit être envoyée à une fonction qui l'ajoute à un champ de saisie de texte. Dois-je simplement créer un "click = SomeFunction (Button.label)" pour chaque bouton ou y a-t-il un moyen plus puissant/plus rapide/moins puissant pour le faire?Application clavier - Meilleure façon d'avoir plusieurs boutons pour ajouter une lettre à l'entrée de texte? Utiliser des gestionnaires d'événements?
0
A
Répondre
3
il y a un moyen beaucoup plus facile. Vous pouvez étendre le composant du bouton et créer un clic par défaut, même si celui-ci se remplit de bulles. Vous pouvez ensuite avoir le composant parent à l'écoute de l'événement. Voici un exemple rapide:
myButton.mxml:
<?xml version="1.0" encoding="utf-8"?>
<mx:Button xmlns:mx="http://www.adobe.com/2006/mxml"
click="clickKeyHandler(event);">
<mx:Metadata>
[Event(name="keyboardClickEvent", type="com.KeyboardEvent")]
</mx:Metadata>
<mx:Script>
<![CDATA[
import com.KeyboardEvent;
protected function clickKeyHandler(event:MouseEvent):void{
dispatchEvent(new KeyboardEvent(this.label));
}
]]>
</mx:Script>
</mx:Button>
com.KeyboardEvent:
package com
{
import flash.events.Event;
public class KeyboardEvent extends Event
{
public static const KEYBOARD_CLICK_EVENT:String = "keyboardClickEvent";
private var _value:String;
public function get value():String{
return _value;
}
public function KeyboardEvent(value:String = "")
{
super(KEYBOARD_CLICK_EVENT, true);
_value = value;
}
override public function clone() : Event {
return new KeyboardEvent(_value);
}
}
}
utilisation
en application:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute" creationComplete="initApp();" xmlns:local="*">
<mx:Script>
<![CDATA[
import com.KeyboardEvent;
private function initApp():void{
this.addEventListener(KeyboardEvent.KEYBOARD_CLICK_EVENT, keyboardHandler);
}
private function keyboardHandler(event:KeyboardEvent):void{
trace(event.value);
}
]]>
</mx:Script>
<local:myButton label="1" />
<local:myButton label="2" />
<local:myButton label="3" />
<local:myButton label="4" />
</mx:Application>
Questions connexes
- 1. meilleure façon de stocker/utiliser plusieurs langues
- 2. Meilleure façon d'implémenter une table de correspondance plusieurs-à-plusieurs avec des données entrées par l'utilisateur
- 3. Liaison de plusieurs gestionnaires à des éléments
- 4. Meilleure façon d'implémenter une autorisation fine pour une application Web?
- 5. Meilleure approche pour ajouter des liens non-web à UITextView
- 6. Quelle est la meilleure façon de fournir une application de boutique en ligne à plusieurs clients?
- 7. Meilleure façon de mettre en œuvre des fonctionnalités d'ajout/édition en HTML pour plusieurs classes à la fois
- 8. Meilleure façon de coder les boutons rolloverflow style 'questions'/'tags'
- 9. Quelle est la meilleure façon de montrer plusieurs cases à cocher pour plusieurs enregistrements dans ASP.NET
- 10. Meilleure façon de télécharger plusieurs fichiers à partir d'un navigateur
- 11. Ajouter un tableau de boutons à un GridView dans une application Android
- 12. meilleure façon de gérer plusieurs threads dans une application Win Forms
- 13. Comment ajouter du texte à plusieurs fichiers
- 14. Ajouter des boutons à une colonne de listview asp.net pour le traitement
- 15. Ajout de raccourcis clavier à une application flexible
- 16. Meilleure méthode pour une application Java pour accéder à un processus Windows, et envoyer des commandes
- 17. Quelle est la meilleure façon de stocker des fichiers texte dans une base de données Sql Server, pour une application web asp.net mvc?
- 18. Meilleure façon d'implémenter la mémorisation de plusieurs valeurs dans une application Web
- 19. La meilleure façon d'extraire du texte à partir d'un document Word sans utiliser COM/automation?
- 20. Quelle est la meilleure façon de créer des lettres imprimables à partir d'une application MVC?
- 21. jQuery plusieurs boutons radio
- 22. Quelle est la meilleure façon de permettre à plusieurs processus de modifier une lucene?
- 23. Meilleure façon d'utiliser une base de code unique pour plusieurs sites Web
- 24. Quelle est la meilleure façon de déterminer si un caractère est une lettre dans VB6?
- 25. Pouvez-vous programmer des boutons sur une manette de jeu pour lier avec l'entrée souris/clavier?
- 26. Quelle est la meilleure façon de commencer à utiliser Mylyn?
- 27. Quelle est la meilleure façon de charger des données hautement réutilisées dans une application web .net
- 28. Quelle est la meilleure façon d'internationaliser une application Python avec plusieurs domaines i18n?
- 29. Meilleure façon de coder Visual Studio comme application de code
- 30. La meilleure façon d'afficher plusieurs lignes de texte statique en C#?
est la ligne « retour nouvelle CompactReportEvent (_valeur);" Censé pour dire "return new keyboardEvent (_value);" au lieu? – Seidleroni
opps oui. désolé j'ai copié un collé et raté que 1 – Shua
je suis allé à travers et a fixé l'exemple. – Shua