Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flash > AS3
AS3 Questions relatives à la programmation ActionScript 3 (Cours AS3)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/02/2011, 21h26   #1
Candidat au titre de Membre du Club
 
Femme Nanou
Étudiant
Inscription : février 2011
Messages : 17
Détails du profil
Informations personnelles :
Nom : Femme Nanou
Âge : 27
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 : 17
Points : 13
Points : 13
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 :
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.
nanou777 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 00h18   #2
Membre régulier
 
Romain Dedenis
Inscription : janvier 2010
Messages : 68
Détails du profil
Informations personnelles :
Nom : Romain Dedenis
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2010
Messages : 68
Points : 87
Points : 87
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 :
this.addEventListener(KeyboardEvent.KEY_DOWN, bouger);
par
Code :
st.addEventListener(KeyboardEvent.KEY_DOWN, bouger);
Romain D. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 13h31   #3
Candidat au titre de Membre du Club
 
Femme Nanou
Étudiant
Inscription : février 2011
Messages : 17
Détails du profil
Informations personnelles :
Nom : Femme Nanou
Âge : 27
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 : 17
Points : 13
Points : 13
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 !
nanou777 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 15h35   #4
Membre régulier
 
Romain Dedenis
Inscription : janvier 2010
Messages : 68
Détails du profil
Informations personnelles :
Nom : Romain Dedenis
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2010
Messages : 68
Points : 87
Points : 87
En fait, après le clic sur le bouton, tu réaffectes le focus à ton objet.
Romain D. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2011, 17h27   #5
Candidat au titre de Membre du Club
 
Femme Nanou
Étudiant
Inscription : février 2011
Messages : 17
Détails du profil
Informations personnelles :
Nom : Femme Nanou
Âge : 27
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 : 17
Points : 13
Points : 13
Bon bah j'ai beau chercher mais je ne vois toujours pas comment faire ça... Avec un "if" ?!
nanou777 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2011, 19h09   #6
Membre régulier
 
Avatar de SnowStyle
 
Homme
Développeur Web
Inscription : octobre 2005
Messages : 68
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : octobre 2005
Messages : 68
Points : 73
Points : 73
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;
SnowStyle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2011, 19h39   #7
Candidat au titre de Membre du Club
 
Femme Nanou
Étudiant
Inscription : février 2011
Messages : 17
Détails du profil
Informations personnelles :
Nom : Femme Nanou
Âge : 27
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 : 17
Points : 13
Points : 13
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
nanou777 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2011, 19h41   #8
Membre régulier
 
Avatar de SnowStyle
 
Homme
Développeur Web
Inscription : octobre 2005
Messages : 68
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : octobre 2005
Messages : 68
Points : 73
Points : 73
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;
SnowStyle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2011, 20h02   #9
Candidat au titre de Membre du Club
 
Femme Nanou
Étudiant
Inscription : février 2011
Messages : 17
Détails du profil
Informations personnelles :
Nom : Femme Nanou
Âge : 27
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 : 17
Points : 13
Points : 13
Ca fonctionne enfin !!! *larme de joie*
Quand je pense que je me suis trituré les neurones avec cette histoire de focus...
Merci beeeaaauucoouuuup !
nanou777 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2011, 20h10   #10
Membre régulier
 
Avatar de SnowStyle
 
Homme
Développeur Web
Inscription : octobre 2005
Messages : 68
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : octobre 2005
Messages : 68
Points : 73
Points : 73
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
SnowStyle est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h45.


 
 
 
 
Partenaires

Hébergement Web