Bonjour. voila, je suis en trian de faire un petit jeu de plateforme
en AS3 et j'ai quelques soucis...
Comme le jeu sera jouable au clavier, il faut que je puisse gérer
au moins 2 simultanéments (par exemple sauter ET aller vers la droite)
Seulement, mon addEvenListener ne me detecte qu'une seul touche enfoncé
a la fois. Comment faire pour en avoir plus ??
voici le code:
Code ActionScript :
package {
import flash.display.*;
import flash.events.*;
import flash.events.MouseEvent;
import flash.events.KeyboardEvent;
import flash.utils.Timer;
import flash.events.TimerEvent;
public class plateforme extends MovieClip {
// variables divers==========================================================
//===========================================================================
var iteration:Number = 50; //nbr de calcul par seconde
var vitessex:Number = 0; //variable qui gère les mouvements en X
var vitessey:Number = 0; //variable qui gère les mouvements en Y
var heros:String = "balle"; //variable de lien du nom d'occurence (stage)
// fonction construtor*******************************************************
//***************************************************************************
public function plateforme() {
var balle_01:Balle=new Balle ;
balle_01.x=300;
balle_01.y=50;
balle_01.name=heros;
addChild(balle_01);
//gravite(9.81)
clavier()
mouvement()
}
//fonction qui gère les touches du clavier===================================
//===========================================================================
public function clavier(){
stage.addEventListener(KeyboardEvent.KEY_DOWN,enfonce);
stage.addEventListener(KeyboardEvent.KEY_UP,relache);
function enfonce(event:KeyboardEvent):void{
if (event.keyCode == 39){ //droite
vitessex = 2
}
if (event.keyCode == 37){ //gauche
vitessex = -2
}
if (event.keyCode == 38){ //haut
vitessey = -9;
}
if (event.keyCode == 40){ //bas
}
}
function relache(event:KeyboardEvent):void{
if (event.keyCode == 39){ //droite
vitessex = 0
}
if (event.keyCode == 37){ //gauche
vitessex = 0
}
if (event.keyCode == 38){ //haut
vitessey = -9;
}
if (event.keyCode == 40){ //bas
}
}
}
//fonction qui gère les mouvements gauche-droite-haut-bas====================
//===========================================================================
public function mouvement() {
var mouvement_gdhb:Timer = new Timer(1000/iteration);
mouvement_gdhb.addEventListener(TimerEvent.TIMER, gaucheDroiteHautBas);
mouvement_gdhb.start()
function gaucheDroiteHautBas (e:TimerEvent):void{
getChildByName(heros).x += vitessex
getChildByName(heros).y += vitessey
}
}
//fonction qui gère la gravite===============================================
//===========================================================================
public function gravite(valeur) {
var myTimer:Timer = new Timer(1000/iteration);
myTimer.addEventListener(TimerEvent.TIMER, timerListener);
function timerListener (e:TimerEvent):void{
vitessey += 0.12*valeur
}
start_btn.addEventListener(MouseEvent.CLICK, onStart);
function onStart(e:MouseEvent):void{
myTimer.start();
}
stop_btn.addEventListener(MouseEvent.CLICK, onStop);
function onStop(e:MouseEvent):void{
myTimer.stop();
}
}
}
}
L'erreur vient de la partie "gestion des touches clavier".
En effet, cette methode fonctionne bien mais des que j'appuie
sur 2 touches en meme temps, c'est la galère totale.
Comment fais-t-on pour gérer simultanément plusieurs touches
(par ex droite et haut si je veux sauter vers la droite...)
pour ne plus que ca bug ?
Un grand merci d'avance pour vos eventuel réponses..
