IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ActionScript 3 Discussion :

Problème de script qui boucle


Sujet :

ActionScript 3

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 47
    Par défaut Problème de script qui boucle
    Bonjour,
    Je suis en train de coder un jeu du Snake en Flash (AS3). J'ai un problème bizarre : le script boucle sur lui-même... En gros, si je met un trace("test"); Au début du script, il va s'afficher indefiniment....

    Voici tout mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
     
    var i:int = 0;
    var tailleCase:int = 10; // Taille en px de la case
    var dir:String = new String("l");// Direction du serpent left,right,up,down
    var tete:Tete = new Tete();// Position de la tete
    var maxLarg:int = tailleCase*49;
    var maxHaut:int = tailleCase*49;
    var score:int = 0;
     
    var pomme:Pomme = new Pomme();
    pomme.x = Math.round(Math.random()*50)*tailleCase;
    pomme.y = Math.round(Math.random()*50)*tailleCase;
    addChild(pomme);
     
    tete.x = tailleCase*25;
    tete.y = tailleCase*25
    addChild(tete);
     
    var corps:Array = new Array();
    while(i <= 1){
    	corps[i] = new Corps();
    	if(i == 0){
    		corps[i].x = tete.x+10;
    		corps[i].y = tete.y;
    	}
    	else{
    		corps[i].x = corps[i-1].x+10;
    		corps[i].y = corps[i-1].y;
    	}
    	addChild(corps[i]);
    	i++;
    }
     
    stage.addEventListener(Event.ENTER_FRAME, bouge);
    stage.addEventListener(KeyboardEvent.KEY_DOWN, changeDir);
     
    function bouge(evt:Event):void {
    	var i:int = 0;
    	var j:int = 0;
    	var continu:Boolean = true;
    	while(j <= score){
    		if(j == 0){
    			corps[j].x = tete.x;
    			corps[j].y = tete.y;
    		}
    		else{
    			corps[j].y = corps[j-1].y;
    			corps[j].x = corps[j-1].x;
    		}
    		j++;
    	}
    	switch (dir) {
    		case "l" :// Gauche
    			if(tete.x >= tailleCase) // On ne touche pas le bord
    				tete.x -= 10;
    			else
    				continu = false;
    			break;
    		case "r" :// Droite
    			if(tete.x <= maxLarg) // On ne touche pas le bord
    				tete.x += 10;
    			else
    				continu = false;
    			break;
    		case "u" :// Haut
    			if(tete.y <= maxHaut) // On ne touche pas le bord
    				tete.y += 10;
    			else
    				continu = false;
    			break;
    		case "d" :// Bas
    			if(tete.x >= tailleCase) // On ne touche pas le bord
    				tete.y -= 10;
    			else
    				continu = false;
    			break;
    	}
    	if(continu == false){
    		trace("Game Over");
    		trace("Score : "+score);
    		stage.removeEventListener(Event.ENTER_FRAME,bouge);
    	}
    	else if(tete.hitTestObject(pomme)){
    		pomme.x = Math.round(Math.random()*50)*tailleCase;
    		pomme.y = Math.round(Math.random()*50)*tailleCase;
    		corps[score] = new Corps();
    		corps[score].x = corps[score-1].x;
    		corps[score].y = corps[score-1].x;
    		addChild(corps[score]);
    		score++;
    	}
    }
     
    function changeDir(evt:KeyboardEvent):void{
    	if(evt.keyCode == 37 && dir != "r") // Left Arrow
    		dir = "l";
    	else if(evt.keyCode == 40 && dir != "d") // Up Arrow
    		dir = "u";
    	else if(evt.keyCode == 39 && dir != "l") // Right Arrow
    		dir = "r";
    	else if(evt.keyCode == 38 && dir != "u") // Down Arrow
    		dir = "d";
    }


    Merci pour votre aide

  2. #2
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 31
    Par défaut
    Salut numerodix,

    Pourquoi n'y a-t-il aucune accolade { } au niveau de tes if, else, function, etc. ? Je n'ai jamais vu une option permettant de les désactiver.
    Sinon je n'ai jamais rencontré ce genre de problème, à moins de mettre le trace dans un écouteur Event.ENTERFRAME
    Ou bien si tu as mis ton code sur une image du scénario principal, sans préciser stop() et qu'il existe d'autre image sur ton scénario principal. Ce qui fait que flash les lis en boucle.

    Si tu fournis tes classes et des accolades, je pourrais tester ce code sur mon Flash. Et voir si le même problème survient. Bonne chance.

    Argl

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 47
    Par défaut
    Les accolades sont bien présentes oO

    Par contre ou est ton script? si tu commence un code un peu important, je te conseil de le mettre dans une classe lié à ton fla, dans un .as.

  4. #4
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 31
    Par défaut
    Olah ! Au temps pour moi.
    C'est en copiant-collant tous ce code dans mon fla, que les accolades ont disparues.

Discussions similaires

  1. [MySQL] problème de script qui s'arrête avant la fin
    Par sorciervoyageur dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 28/05/2009, 10h19
  2. script qui boucle sous Fx3 et pas sous ie6
    Par Peanut dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 25/02/2009, 09h43
  3. script qui boucle
    Par sam01 dans le forum Administration système
    Réponses: 2
    Dernier message: 23/08/2008, 15h27
  4. [scanf] problème de programme qui boucle
    Par dr4g0n dans le forum Bibliothèque standard
    Réponses: 5
    Dernier message: 22/01/2008, 10h48
  5. [GD] Problème de script qui génère des miniatures de photos
    Par Panama dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 30/01/2007, 17h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo