IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ActionScript 3 Discussion :

Problème avec KeyboardEvent.


Sujet :

ActionScript 3

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 22
    Par défaut Problème avec KeyboardEvent.
    Bonsoir,

    Je reviens vers vous sûrement encore avec un problème de débutant mais je n'y peux rien, mes neurones ont du mal à comprendre les subtilités de l'AS3, désolée...

    J'aimerais faire avancer un MovieClip (Mouton) à l'aide de quatre touches du clavier (1,2,3 et 4), j'ai essayé avec un if, avec switch case, mais rien ne fonctionne alors si l'un ou l'une d'entre vous pouvait m'éclairer... Merci !
    Pour l'instant, je n'ai pas encore implémenté le déplacement avec les touches 1,2,3 et 4 mais même juste comme ça, ça ne fonctionne pas :/

    Voilà mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    package{
    	// importation des classes
    	import flash.display.MovieClip;
    	import flash.display.Stage;
    	import flash.events.*;
    	import flash.display.Stage;
    	import flash.ui.Keyboard;
     
    	// classe principale
    	public class Mouton extends MovieClip{
    		// les propriétés
    		private var st:Stage;
     
    		// le constructeur
    		public function Mouton(s:Stage){
    			st = s; // mise à jour de la propriété st
    			this.y = 440;
    			this.x = 550; 
    			// ajouts des écouteurs de touches
    			this.addEventListener(KeyboardEvent.KEY_DOWN, bouger);
    		}
     
    		function bouger (evt:KeyboardEvent):void{
    			switch(evt.keyCode){
           			// déplacement vers la gauche
           			case Keyboard.LEFT:
              			evt.target.x-=5;
              		break;
           			// déplacement vers le haut
           			case Keyboard.UP:
              			evt.target.y-=5;
              		break;
           			// déplacement vers la droite
           			case Keyboard.RIGHT:
              			evt.target.x+=5;
              		break;
           			//déplacement vers le bas
           			case Keyboard.DOWN:
              			evt.target.y+=5;
              		break;
           			// pas de déplacement
           			default :
              			evt.target.x+=0;
        		}
    		}
    	}
    }
    EDIT : je n'ai pas d'erreurs, le mouton s'affiche mais ne se déplace pas.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 73
    Par défaut
    Je ne voudrai pas dire de bêtises, mais il me semble que pour que l'écouteur clavier fonctionne, il faut que ton mouton est le focus (soit sélectionne) puis, les évènements claviers seront remontés.

    Je te conseille de modifier ton code et d'ajouter l'écouteur sur le stage.

    En gros remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.addEventListener(KeyboardEvent.KEY_DOWN, bouger);
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    st.addEventListener(KeyboardEvent.KEY_DOWN, bouger);

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 22
    Par défaut
    Bah en faisant ça, ça fonctionne... mais sur un autre objet qui reçoit le focus (un bouton) :/
    Comment je fais pour dire qu'il faut que ce soit l'occurrence de mon objet "Mouton" qui doit recevoir le focus ?!

    EDIT : j'ai ajouté ça à mon code :
    s.focus = this;
    et ça fonctionne sur mon objet Mouton tant que je n'ai pas cliqué sur le bouton.
    Existe-t'il un moyen de "bloquer" le focus sur mon clip tout en faisant en sorte que mon bouton fonctionne quand je le clique ?!
    Je viens de lire que l'on pouvait passer le focus entre plusieurs objets grâce à une boucle de tabulation, mais comment est-ce que ça fonctionne au juste ?

    Merci !

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 73
    Par défaut
    En fait, après le clic sur le bouton, tu réaffectes le focus à ton objet.

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 22
    Par défaut
    Bon bah j'ai beau chercher mais je ne vois toujours pas comment faire ça... Avec un "if" ?!

  6. #6
    Membre éclairé Avatar de SnowStyle
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2005
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2005
    Messages : 73
    Par défaut
    hmm, il y a juste une chose que je comprend pas, tu as plusieurs moutons à faire deplacer ? parce que sinon tu as pas besoin de focus, suffit de directement déplacer ton mouton dans les events

    genre

    case Keyboard.LEFT:
    monMouton.x -= 5;

  7. #7
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 22
    Par défaut
    Non je n'ai qu'un seul mouton à faire déplacer.

    C'est ce que j'ai fait et ça fonctionne. Sauf qu'après avoir cliqué sur un bouton de la scène, c'est ce bouton qui se déplace et plus le mouton même s'ils reçoivent tous les deux des évènements différents

  8. #8
    Membre éclairé Avatar de SnowStyle
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2005
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2005
    Messages : 73
    Par défaut
    Non mais je veux dire tu te sers du target de l'event pour déplacer, tu déplaces pas le mouton, tu déplaces ce qui est focus, enfin si j'ai bien compris lol

    essaye comme ça pour *toujours* déplacer le mouton :

    case Keyboard.LEFT:
    this.x-=5;

  9. #9
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 22
    Par défaut
    Ca fonctionne enfin !!! *larme de joie*
    Quand je pense que je me suis trituré les neurones avec cette histoire de focus...
    Merci beeeaaauucoouuuup !

  10. #10
    Membre éclairé Avatar de SnowStyle
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2005
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2005
    Messages : 73
    Par défaut
    content d'avoir pu t'aider

    juste pour précisé, evt.target ça sert surtout pour les events souris, tu cliques sur un objet, evt.target permet de faire une action dessus.
    Enfin j'ai pas une grande maîtrise des events, mais autant aller au plus simple tant qu'on peux le faire.

    hésite pas a demander de l'aide pour t'économisé des migraines

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo