[Jeu Flash] Eviter la touche enfoncée

jonfever Messages postés 12 Date d'inscription lundi 1 octobre 2012 Statut Membre Dernière intervention 1 octobre 2012 - 24 juin 2010 à 16:55
jonfever Messages postés 12 Date d'inscription lundi 1 octobre 2012 Statut Membre Dernière intervention 1 octobre 2012 - 29 juin 2010 à 22:10
Hello !
Je suis nouveau sur Flashkod car je m'intéresse depuis peu à l'Action Script. En effet, j'effectue des tests simples (faire marcher un personnage, clic sur un bouton... etc..).

Ma question : j'ai créer un script pour faire sauter une balle avec la barre d'espace. Le problème, c'est que si on laisse enfoncée la barre d'espace, la balle se met à sauter sans arrêt, alors que moi, j'aimerai que le joueur doit relâcher et re-appuyer la barre d'espace pour sauter.

Voici mon code :


//Faire sauter quelque chose by Jon Fever
//--------------------------------------------------

// Déclarer la variable vitesse (pour la retombée)
//--------------------------------------------------
var vitesse = 0;
//--------------------------------------------------

// Faire sauter la balle
//--------------------------------------------------
this.onEnterFrame = function()
{
if(Key.isDown(Key.SPACE))
{
if(balle._y>=312.9) // Si la balle est égal au sol,
   //  il peut la faire sauter.
{
balle._y-=40;
vitesse=2;
}
    }
//--------------------------------------------------
// Faire retomber la balle
//--------------------------------------------------
if(balle._y<=312.9) // Si la balle est plus haute que le sol
   // (plus basse que Y), elle tombe.
{
balle._y +=vitesse; // La balle prend de la vitesse.
vitesse++
}
}
//--------------------------------------------------

7 réponses

jonfever Messages postés 12 Date d'inscription lundi 1 octobre 2012 Statut Membre Dernière intervention 1 octobre 2012
24 juin 2010 à 16:58
Merci d'avance pour les réponses.

(Désolé du deuxième post, j'ai envoyé le premier sans le vouloir).
0
cs_bali_balo Messages postés 1378 Date d'inscription samedi 9 octobre 2004 Statut Membre Dernière intervention 1 novembre 2010 1
28 juin 2010 à 00:36
Salut à toi,
la solution est simple. Il suffit pour cela de rajouter une variable booléenne.


//Faire sauter quelque chose by Jon Fever
//--------------------------------------------------

// Déclarer la variable vitesse (pour la retombée)
//--------------------------------------------------
var vitesse = 0;
var spaceBarDown:Boolean = false;
//--------------------------------------------------

// Faire sauter la balle
//--------------------------------------------------
this.onEnterFrame = function()
{
if(Key.isDown(Key.SPACE) && !spaceBarDown)
{
spaceBarDown = true;
if(balle._y>=312.9) // Si la balle est égal au sol,
// il peut la faire sauter.
{
balle._y-=40;
vitesse=2;
}
}
else
{
spaceBarDown = false;
}
//--------------------------------------------------
// Faire retomber la balle
//--------------------------------------------------
if(balle._y<=312.9) // Si la balle est plus haute que le sol
// (plus basse que Y), elle tombe.
{
balle._y +=vitesse; // La balle prend de la vitesse.
vitesse++
}
}
//--------------------------------------------------


B_B
0
cs_bali_balo Messages postés 1378 Date d'inscription samedi 9 octobre 2004 Statut Membre Dernière intervention 1 novembre 2010 1
28 juin 2010 à 00:37
Salut à toi,
la solution est simple. Il suffit pour cela de rajouter une variable booléenne.


//Faire sauter quelque chose by Jon Fever
//--------------------------------------------------

// Déclarer la variable vitesse (pour la retombée)
//--------------------------------------------------
var vitesse = 0;
var spaceBarDown:Boolean = false;
//--------------------------------------------------

// Faire sauter la balle
//--------------------------------------------------
this.onEnterFrame = function()
{
if(Key.isDown(Key.SPACE) && !spaceBarDown)
{
spaceBarDown = true;
if(balle._y>=312.9) // Si la balle est égal au sol,
// il peut la faire sauter.
{
balle._y-=40;
vitesse=2;
}
}
else
{
spaceBarDown = false;
}
//--------------------------------------------------
// Faire retomber la balle
//--------------------------------------------------
if(balle._y<=312.9) // Si la balle est plus haute que le sol
// (plus basse que Y), elle tombe.
{
balle._y +=vitesse; // La balle prend de la vitesse.
vitesse++
}
}
//-------------------------------------------------- 


(désolé pour le double post aussi mais j'ai mis en rouge les modifications)

B_B
0
cs_bali_balo Messages postés 1378 Date d'inscription samedi 9 octobre 2004 Statut Membre Dernière intervention 1 novembre 2010 1
28 juin 2010 à 00:38
Mince... c'est pas passé dans le script...
Ne prends pas en compte le second post ^^


B_B
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jonfever Messages postés 12 Date d'inscription lundi 1 octobre 2012 Statut Membre Dernière intervention 1 octobre 2012
29 juin 2010 à 20:40
Salut, merci de m'avoir répondu.
J'ai testé ton code avec la valeur boléenne, malheureusement, celà ne marche pas.

Je suis en ActionScript 2.0, tu crois que c'est ça ?
0
cs_bali_balo Messages postés 1378 Date d'inscription samedi 9 octobre 2004 Statut Membre Dernière intervention 1 novembre 2010 1
29 juin 2010 à 22:04
Oui en effet je me suis loupé
Désolé, cela fait pas mal d'années que j'ai arrêté l'AS2 ^^

Voici le bon code (du moins un exemple pour gérer ton problème, à toi de l'intégrer dans ton code, c'est simple )

var spaceBarDown:Boolean = false;
//--------------------------------------------------

// Faire sauter la balle
//--------------------------------------------------
this.onEnterFrame = function()
{
if( Key.isDown(Key.SPACE) && !spaceBarDown )
{
spaceBarDown = true;
trace( "SPACE DOWN" );
}
else if( !Key.isDown(Key.SPACE) && spaceBarDown )
{
spaceBarDown = false;
trace( "SPACE UP" );
}
}


B_B
0
jonfever Messages postés 12 Date d'inscription lundi 1 octobre 2012 Statut Membre Dernière intervention 1 octobre 2012
29 juin 2010 à 22:10
Ahh ça marche !
Merci !
0
Rejoignez-nous