begin process at 2012 02 04 12:30:43
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > GESTIONNAIRE KEYBOARDEVENT (TOUCHE MULTIPLE)

GESTIONNAIRE KEYBOARDEVENT (TOUCHE MULTIPLE)


 Information sur la source

Note :
Aucune note
Catégorie :Astuces Classé sous :KeyboardEvent, touche, clavier, evenement, Keyboard Niveau :Débutant Date de création :24/02/2009 Date de mise à jour :24/02/2009 22:40:54 Vu / téléchargé :3 170 / 199

Auteur : Blacknight91titi

Ecrire un message privé
Site perso
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Bonjour à tous,

Quel développeur ActionScript 3 utilisant les évènements clavier (KeyboardEvent) ne s'est jamais posé la question suivante : "Comment faire si mon action résulte d'une combinaison de touche ?"

Voici donc un gestionnaire d'appui de touche multiple sous forme d'évènement.

La mise en place est légèrement différente qu'un évènement standards puis celui-ci n'est pas inclus par défaut sur un DisplayObject.

Si quelqu'un à une solution à apporter pour faciliter un peu plus l'ajout du gestionnaire (qui est ma foi déjà pas très lourd d'utilisation) je suis preneur.

Source

  • Le fichier zip contient deux classes, l'une pour la récupération multiple des touches appuyés, l'autre pour l'évènement associé.
  • Voici un exemple d'implémentation :
  • import flash.text.TextField;
  • import flash.text.TextFieldAutoSize;
  • var myText:TextField = new TextField();
  • myText.autoSize = TextFieldAutoSize.LEFT;
  • myText.x = myText.y = 10;
  • addChild(myText);
  • var myKeyboardProcess:KeyboardProcess = new KeyboardProcess(stage);
  • stage.addEventListener(KeyboardProcessEvent.KEY_DOWN, myEvent);
  • function myEvent(Evt:KeyboardProcessEvent):void {
  • myText.text = Evt.toString().replace(new RegExp(" ","g"),"\n\t")+"\n"+Evt.target;
  • }
Le fichier zip contient deux classes, l'une pour la récupération multiple des touches appuyés, l'autre pour l'évènement associé.

Voici un exemple d'implémentation :

import flash.text.TextField;
import flash.text.TextFieldAutoSize;

var myText:TextField = new TextField();
myText.autoSize = TextFieldAutoSize.LEFT;
myText.x = myText.y = 10;
addChild(myText);

var myKeyboardProcess:KeyboardProcess = new KeyboardProcess(stage);
stage.addEventListener(KeyboardProcessEvent.KEY_DOWN, myEvent);

function myEvent(Evt:KeyboardProcessEvent):void {
	myText.text = Evt.toString().replace(new RegExp(" ","g"),"\n\t")+"\n"+Evt.target;
}

 Conclusion

Amélioration possible : Employer la classe Vector plutôt que la classe Array pour stocker la liste des codes touches appuyées.
La mise en place s'avère cependant peut être plus lourde par rapport au gain de performance gagné (aussi infime soit-il).

L'utilisation de ces deux classes est libre à condition de laisser le nom de l'auteur (comme indiquer dans chacune des classes).

En cas d'utilisation à des fins commerciale, merci de m'en avertir

Cette source est également présente sur mon blog:
http://www.osteres.com/blog/archives/69

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

24 février 2009 11:52:37 :
Mise à jour du fichier zip. Le fichier source a été enregistrer au format Flash CS3 permettant une meilleur compatibilité
24 février 2009 20:10:51 :
Suppression du Timer. Absolument inutile !
24 février 2009 22:40:54 :
J'ai oublié de retirer le paramètre "frameRate" lors de la précédente mise à jour.

 Sources du même auteur

Source avec Zip CLASSE PNGENCODER (AS3)
Source avec Zip Source avec une capture EDITEUR DE DESSIN + ENREGISTREMENT
Source avec Zip Source avec une capture DÉPLACEMENT DE PERSO STYLE JEUX DE STRATEGIE
Source avec Zip Source avec une capture FONDU DE COULEURS
Source avec Zip Source avec une capture BALLET DE LIGNES + FONDU DE COULEUR

 Sources de la même categorie

Source avec Zip LECTURE DE TEXTE "VOICE" par yasdar
Source avec Zip Source avec une capture AS3 - PRINCIPE ET APPLICATION DE FONCTION RÉCURSIVE par pegase31
Source avec Zip Source avec une capture UN PACKAGE "HISTORIC" POUR GÉRER VOS COMMANDES par top30
Source avec Zip Source avec une capture AS3 - SIMULATION DE GRILLE D'ÉDITION par pegase31
Source avec Zip CONSTANTE D'OBJET INMODIAFIABLE ET DÉBLOQUABLE par top30

 Sources en rapport avec celle ci

Source avec Zip KEYBOARD VS MOUSE par simker
Source avec Zip Source avec une capture SIMPLE JEU DE TIR EN AS3 par DigitalLumberjack
Source avec Zip Source avec une capture PONG par spidermario

Commentaires et avis

Commentaire de top30 le 24/02/2009 19:28:32

Pourquoi l'utilisation d'un "Timer" ???

KeyboardProcess ( repeat:Boolean )
-> addMultiKeyEvent( [keysList], handler );


stage.addEventListener( "up", processKeyUp ) ;
stage.addEventListener( "down", processKeyDown ) ;

KeyboardProcess.processKeyDown( e )
-> pressKeys[e.keyCode]= true ;
for each( multiKeys in multiKeysList )
    for each( key in multiKeys )

       pressed= 0
       if( pressKey[key] ) pressed++ ;
       if( pressed== multiKeys.length )
      
          if( repeat )
             DISPATCHER EVENT TOUTES KEY DEMANDE PRESSËE
          else
             if( !dispatched[multiKeys] )
                 dispatched[multiKeys]= true
                  DISPATCHER EVENT TOUTES KEY DEMANDE PRESSËE

KeyboardProcess.processKeyUp( e )
-> DELETE pressKeys[e.keyCode] ;

Ou quelquechose comme ca...

Commentaire de Blacknight91titi le 24/02/2009 20:14:33

Ouh là ! Oui en effet... Qu'est ce que j'ai fait la !

Mon idée première était d'avoir une classe qui s'occupe elle même de distribuer l'évènement de façon régulière.
Le problème c'est que ce raisonnement est plus compatible avec AS2 qu'avec AS3.

L'emploi du Timer peut s'avérer utile, mais pas à l'intérieur de la classe.

Merci de me l'avoir fait remarqué, la source a été corrigé en conséquence.
Bien qu'elle soit largement allégée, elle reste, je pense, utile ("j'espère"... plutôt :D)

Bon au moins, elle peut toujours servir pour découvrir que l'on peut créer ces propres évènements ;)

Merci encore TOP30 :)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

émuler une touche de clavier avec un bouton ? [ par snakeeater1 ] bonjours je sais je pose plein de questins mais je suis avide savoir :p,voila je voulai savoir si il était possible ( et si oui, comment ? )d'émuler u URGENT touche clavier [ par lezart ] Bonjour...Je cherche une solution pour qu'une fois le swf lancé... il appui automatiquement sur la touche "ENTREE" et la touche "SUP"....En faite, je Mouvement au clavier [ par jultoys ] Salut a tous,voila une question de débutant ;)Je suis entrain d'essayer de créer un petit jeu et j ai besoin de vois lumières... J'ai c touche clavier [ par scawf ] Bonjour, je cherche a remplacer le UP, DOWN, LEFT , RIGHT par les touches du pavé numérik (touche4 et 6), mais je ne connai pas leur nom..la question Touche du clavier [ par manuken ] Bonjour, quelqu'un pourrait-il me traduire la phrase suivante en FLASH SVP : Si tu appuye sur la touche "é" va à l'image 1Si tu appuye sur toute autre programmation du clavier [ par renou ] Bonjour a tous, je suis débutant sur Flash (niveau image par image et interpo...).Pour un taff, je dois programmer mon clavier numérique pour qu'il ba clic continu (un peu comme une touche de clavier) [ par max_zed ] Bonjour,Je souhaite savoir s'il existe un code qui me permettrait de faire un clic continu. Ce que j'appelle un clic continu, c'est un peu la même cho comparaison de deux variables [ par GeraldTh ] Bonjour,Je cherche comment faire pour comparer, dans AS2, une variable donnée par la touche de mon clavier à un tableau de valeurs : new Array("74","7 Touches du clavier par raccourci... [ par Limack ] Bonjour les amis(es).Voilà, je voudrais appeler par code dans Flash 8 la touche {Tabulation} ou toute autre touche sans avoir appuyée au clavier ... S bouton ok = touche de mon clavier "ENTER" [ par baronne ] Hello j'ai un petit formulaire et pour le valider j'aimerai qu'on clique soit sur mon bouton (OK) soit qu' on puisse utiliser la touche "ENTER" - Sav


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,764 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales