Déplacer un clip avec les touches ZQSD ?!

Résolu
cs_badben Messages postés 55 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 22 août 2007 - 21 nov. 2005 à 02:19
cs_badben Messages postés 55 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 22 août 2007 - 21 nov. 2005 à 16:37
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

_benjy Messages postés 1575 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 21 février 2011 2
21 nov. 2005 à 10:20
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
3
cs_badben Messages postés 55 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 22 août 2007
21 nov. 2005 à 16:37
Effectivement c'est vrai que ça marche :).



J'avais essayer de faire :

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



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



Merci.
0
Rejoignez-nous