Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flash > AS1/AS2
AS1/AS2 Questions relatives à la programmation ActionScript 1 et 2 (Cours AS2)
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 04/05/2006, 08h25   #1
Membre actif
 
Avatar de jbidou88
 
Inscription : avril 2006
Messages : 483
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 483
Points : 187
Points : 187
Par défaut Jeux 2d en flash

Bonjour, je vais essayer de vous expliquer clairement mon problème.

J'aimerai faire bouger mon perso (clip) avec les flèches. Jusque là tout va bien mais ensuite j'aimerai qu'il fasse un saut quand je presse sur ESPACE. J'ai essayer d'une façon mais ça ne fonctionne pas. Voici 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
onClipEvent (enterFrame) {
    if (Key.isDown(Key.RIGHT)) {
        this._x = _x+10;
        this.gotoAndPlay("Marche");
    } else if (Key.isDown(Key.DOWN)) {
        this._y = _y+10;
        this.gotoAndPlay("Marche");
    } else if (Key.isDown(Key.LEFT)) {
        this._x = _x-10;
        this.gotoAndPlay("Marche");
    } else if (Key.isDown(Key.SPACE)) {
        for (i=0;i=8;i++) {
        this._y = _y-3;
        this._x = _x+3;
        }
        for (i=0;i=8;i++) {
        this._y = _y+3;
        this._x = _x-3;
        }
        this.gotoAndPlay("Marche");
    }
    else {
        this.gotoAndStop("Arret");
    }
}
Si vous pouviez me dire comment le faire sauter, ce serait super méga cool.

Merci de votre aide
jbidou88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2006, 13h00   #2
Rédacteur/Modérateur

 
Avatar de arnolem
 
Inscription : février 2005
Messages : 2 798
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : février 2005
Messages : 2 798
Points : 2 673
Points : 2 673
Si tu pose une question a chaque fois, tu n'avancera pas par toi même dommage. De plus, n'ouvre pas un nouveau post a chaque fois si ça parle de la meme chose.
(au passage regarde tes message privé )

Sinon pour ton problème, il faut déja que tu comprene se que tu fais, pour le moment je ne vais pas te donner du code tout fais, juste t'expliquer une logique.

Tu veux faire sauter un personnage, pour flash ton personnage c'est un MovieClip

Tu peux donner un nom d'occurence à celui-ci, moi je vais l'appeller monPerso_mc

Ton clip à des propriétés et des méthodes, les 2 propriétés qui t'intéresse sont _x et _y . Si tu à fais des Maths (géométrie) tu va comprendre facilement. X correspond à la position du clip sur l'axe de Gauche à Droite et Y correspond à la position du clip sur l'axe de Haut en Bas.
Pour récupérer ou définir cette valeur (position) tu écris comme ça :
Code :
1
2
monPerso_mc._x = 50 ;
monPerso_mc._x = 50 ;
Dans cet exemple, je place monPerso_mc à la position (50;50)

Ensuite pour le saut du personnage, ça se traduis par une variation de cette position, c'est tout.
Dis moi déja si tu a compris avant que je continu.
arnolem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2006, 13h05   #3
Membre actif
 
Avatar de jbidou88
 
Inscription : avril 2006
Messages : 483
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 483
Points : 187
Points : 187
Oui sa j'ai très bien compris mais si je fais varier ces valeur dans une boucle cela va trop vite et on ne voit pas le déplacement.
jbidou88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2006, 14h19   #4
Inactif
 
Avatar de CR_Gio
 
Inscription : septembre 2005
Messages : 1 196
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 1 196
Points : 1 201
Points : 1 201
Salut,
(julien.biedermann> T'aurai du essayer ovomaltine.... ) http://www.developpez.net/forums/sho...d.php?t=140134

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
var interval:Number=new Number();
var posY:Number=new Number();
 
// executer la fonction auPas toute les 150 millisecondes
interval=setInterval(auPas,150);
 
function auPas(){
  bonhomme_mc._y=posY;
  posY+=10;
  if(posY>100)
     clearInterval(timer);
}
julien, pourquoi ne pas faire un clip ou tu desines ton bonhomme qui saute a l'aide de "mouvement d'interpolation"
Tu pourai donc avoir ce-ci:

pour plus de comprehension, je defini les signes suivant :
" * " correspond a une image clé
" _____> " correspond a un mouvement d'interpolation

Voici la timeLine:
*___sauter____>**__acroupire___>**___gauche_____>**___droite___>*

*___sauter____>* correspond au saut du bonhomme
*__acroupire___>* correspond a l'acroupisement du bonhomme
*___gauche____>* changement de direction vers la gauche
*____droite____>*

Il te suffit juste d'utiliser des stop() et des gotoAndplay() dans ton 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
 
onKeyDown=function(){
if(keyIsDown==(key.SPACE)){//correspond au saut du bonhomme
bonhomme_mc.gotoAndPlay("saut");
}
// etc ...
 
/*position de depart de ton bonhomme*/
var posX=0;
var posY=0;
var interval:Number;
 
if(keyIsDown==(key.LEFT)){//correspond au deplacement du bonhomme
interval=setInterval("moveMC",150);
}
}
 
onKeyUp=function(){
if(KeyDown==Key.LEFT){
clearInterval(interval);
}
}
 
function moveMC(){
bonhomme._x=posX;
posX++;// ou posX+=pas; avec var pas:Number  
/*par exemple si l'utilisateur fait un double clap sur la fleche de gauche
le bonhomme se deplace deux fois plus vite (pas=pas*2)....
ou sinon si la touche est enfoncé pendant plus de 3s */
}
Je m'excuse pour ce code un peu "junk" mais j'ai pas flash entre les main. Mais l'esprit y est.
Julien, tu remarquera que avec le meme nombre de ligne de code que toi j'ai deja presque fait tout les mouvement posible ... et c'est du code robuste . Quoi que attention au setInterval clearInterval

petite astuce contre le peu de robustesse du setInterval, clearInterval.
Code :
1
2
3
4
5
6
7
8
9
10
 
var timer:Number=new Number(0);
 
//valider le lancement 
if(timer==0)
timer=setInterval(timer);
 
//effacer
clearInterval(timer),
timer=0;
CR_Gio 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 15h21.


 
 
 
 
Partenaires

Hébergement Web