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 :

Parser tableau : problème boucle for. [CS4]


Sujet :

ActionScript 3

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 22
    Par défaut Parser tableau : problème boucle for.
    Bonsoir,

    Je viens encooore demander votre aide pour une toute petite boucle for qui me casse la tête depuis maintenant... Trop longtemps
    J'essaie (en vain) d'incrémenter / décrémenter aux clics sur deux boutons une variable, mais celle-ci au lieu de s'incrémenter / décrémenter de +1, le fait de +4...

    Voilà le 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
     
    var position, i, long:int; 
    ...
    position = 0;
    ...
    tabImg = new Array("test0","test1","test2","test3");
    trace(tabImg); // renvoie bien les 4 chaînes
    long = tabImg.length;
    trace(long); // renvoie bien "4"
    ...
     
    private function loadNext(e:MouseEvent):void{ 
    			for(i = 0; i < long; i++){
    				position ++;
    			}
    		trace(position);
    		}
    Est-ce que vous voyez là où j'ai pu faire une erreur ?!
    Merci !

  2. #2
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Bonjour,

    en fait ta variable s'incrémente bien de 1 en 1 mais...4 fois !

    et comme tu fais ton trace à la sortie de la boucle tu ne vois que le résultat final. Teste le code ci dessous tu verras

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    private function loadNext(e:MouseEvent):void{ 
       for(i = 0; i < long; i++){
          position ++;
          trace(position);
       }
    }

  3. #3
    Membre éclairé Avatar de SnowStyle
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2005
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2005
    Messages : 73
    Par défaut
    Salut, ouai comme dit Madfrix tu l'incrémentes quatre fois
    c'est juste que tu n'as pas besoin d'une boucle dans ton cas

    si tu veux l'incrémenter il faut simplement l'incrémenter

    cependant il te faut une condition pour éviter que ça aille au delà du contenu de ton Array, donc incrémenter jusqu'à "test3"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (position != (tabImg.length-1)) { position++; }
    si position n'est pas égal à 3, on incrémente


    ou alors tu peux revenir à la position zéro en rajoutant en dessous un else

    donc ta fonction incrémente position jusqu'à la position maximum, pour décrémenter ça fonctionne pareil mais à l'inverse, décrémente jusqu'à la position minimum.

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 22
    Par défaut
    Wahoo je suis trop bête...
    En tout cas, merci à tout les deux, ça fonctionne impeccable
    Je ne mets pas en résolu tout de suite parce-que je rencontre encore des petits soucis pour décrémenter, je vais chercher et si je ne trouve pas je reviendrai ici vous solliciter encore

    Sinon, concernant le code plus haut, je ne comprends pas vraiment pourquoi il faut mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    position = (tabImg.length-1);
    et pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    position = (tabImg.length);
    Il sert à quoi le "-1" ? Je ne comprends pas vraiment la logique...

  5. #5
    Membre éclairé Avatar de SnowStyle
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2005
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2005
    Messages : 73
    Par défaut
    Je ne saurais dire si c'est logique, mais length te retourne le nombre d'éléments dans l'array, dans ton exemple il y en as 4.
    Par contre pour aller chercher ces éléments on démarre de la position 0, donc la position 3 est le 4eme élément du tableau.

    Faire -1 sur le nombre d'éléments d'un tableau te donne la position du dernier élément de ce tableau.

    Enfin c'est juste pour connaitre la position max, vu qu'on s'en sert dans notre condition, une fois la position max atteinte, on incrémente plus.

    J'espère que ce que je dis est compréhensible.

    Concernant décrémenter j'ai fait exprès de rien dire pour que tu trouves par toi même, alors oublie pas que c'est pareil sauf qu'on utilise la position minimale pour stopper la décrémentation, tu devrais y arriver sans soucis.

    Il y a peut être d'autres méthodes, peut être plus "logique", mais je dois pas connaitre ou du moins elles ne me viennent pas à l'esprit.

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 22
    Par défaut
    Si, si c'est super compréhensible, merci
    Pour décrémenter, je ne sais pas si c'est comme ça qu'il fallait faire mais ça semble fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private function loadPrev(e:MouseEvent):void{
    			if (position != 0){ 
    				position--;
    			}
    			else{ 
    				position = (tabImg.length-1); 
    			}
    			trace(position);
    		}
    J'ai eu un soucis avec la variable position qui était instanciée à "-1" au départ. Du coup quand je commençais par cliquer sur le bouton suivant puis précédent, les "trace" (0,1,2,3,0... puis 3,2,1,0,3...) fonctionnaient bien mais pas quand je commençais à cliquer sur le bouton suivant; j'obtenais des "-2,-3,-4..." au lieu de "2,1,0". Pas sûre que ça soit clair
    En tout cas, j'ai changé la valeur initiale de position à 0, la première valeur en sortie n'est plus 0 mais 1 mais au moins, la décrémentation fonctionne.

    Merci encore !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème boucle for
    Par revsys dans le forum Delphi
    Réponses: 20
    Dernier message: 24/05/2007, 15h50
  2. Problème boucle for
    Par rouliane dans le forum C++
    Réponses: 2
    Dernier message: 14/12/2006, 14h37
  3. [VBA-E, Débutant] Problème Boucle for
    Par strifer dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 24/08/2006, 12h30
  4. [Débutant] Problème boucle for
    Par toniooooo dans le forum Langage
    Réponses: 10
    Dernier message: 18/04/2006, 14h42
  5. [FLASH 8] Problème Boucle For
    Par Begood dans le forum Flash
    Réponses: 6
    Dernier message: 21/03/2006, 11h36

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