Déplacer un clip avec les touches ZQSD ?!

Résolu
Messages postés
55
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
22 août 2007
-
Messages postés
55
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
22 août 2007
-
Bonjour,



Je suis en train de développer un jeu de beat em up avec 2 personnes en simultané sur le même ordi et donc le même clavier.

Le premier joueur utilise les flèches directionnelles. J'utilise alors
une boucle par image (onEnterFrame) avec un Key.isDown(Key.RIGHT)



comme ceci :



j1.onEnterFrame = function() {

if (Key.isDown(Key.RIGHT)) {

this._x += this.vitPersoX;

} else if (Key.isDown(Key.LEFT)) {

this._x -= this.vitPersoX;

}


};



L'animation est très fluide, (l'anim est en 60fps).

Mais pour diriger l'autre personnage je dois utliser les touches ZQSD donc un ecouteur comme ceci :



var keyListener:Object = new Object();

keyListener.onKeyDown = function() {

// Touche Z avancer & reculer

if (Key.getCode() == 90) {

trace("Z");

} else if (Key.getCode() == 83) {

trace("S");

}

}



Le problème c'est que le déplacement est
très sacadé, de plus, le clip met un petit temps à se déplacer lorsque
la touche est enfoncée.

Par ailleurs le personnage ne peut pas se déplacer en diagonale car
lorsqu'on appuit sur une autre touche en même temps le personnage
s'arrête brusquement.



Avec un peu d'algo je devrait arriver à mettre une boucle enterFrame
pour avoir un mouvement fluide mais je ne sais pas si il est possible
d'appuyer sur 2 touches en même temps avec un ecouteur.



Merci davance.

2 réponses

Messages postés
1575
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
2
Salut

pourkoi changer de méthode ???
un coup tu utilise un onEnterFrame, et la fois d'apres un ecouteur ... c spé comme principe
pourkoi ne pas continuer a utilise le mm systeme que pour les fleches de direction ? mais avec le code des touche z, s, q, d ???

jl.onEnterFrame = function(){
if (Key.isDown(90)) trace ("touche z enfoncé");
else if (Key.isDown(83)) trace ("touche s enfoncé");
}

pour les diagonales, suffit de tester dans ton onEnterFrame si 2 touche sont enfoncés :

jl.onEnterFrame = function(){
if (Key.isDown(90) and Key.isDown(codeToucheD)) trace ("diagonale haut droite");
else if (Key.isDown(90) and Key.isDown(codeToucheQ)) trace ("diagonale haut gauche");
.....
}

++

Flash sans Limites
_Benjy chez kOlapsis

merci de penser a accepter
Messages postés
55
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
22 août 2007

Effectivement c'est vrai que ça marche :).



J'avais essayer de faire :

Key.isDown(Key.getCode()) = 90



Mais ça ne marchais pas.... :)



Merci.