Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flash > AS3
AS3 Questions relatives à la programmation ActionScript 3 (Cours AS3)
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 16/04/2011, 03h27   #1
Candidat au titre de Membre du Club
 
Femme Nanou
Étudiant
Inscription : février 2011
Messages : 17
Détails du profil
Informations personnelles :
Nom : Femme Nanou
Âge : 27
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 : 17
Points : 13
Points : 13
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 :
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 !
nanou777 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2011, 10h31   #2
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
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 :
1
2
3
4
5
6
7
 
private function loadNext(e:MouseEvent):void{ 
   for(i = 0; i < long; i++){
      position ++;
      trace(position);
   }
}
__________________
Je ne réponds pas aux questions envoyées par mp
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/04/2011, 12h20   #3
Membre régulier
 
Avatar de SnowStyle
 
Homme
Développeur Web
Inscription : octobre 2005
Messages : 68
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : octobre 2005
Messages : 68
Points : 73
Points : 73
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 :
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.
SnowStyle est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/04/2011, 20h05   #4
Candidat au titre de Membre du Club
 
Femme Nanou
Étudiant
Inscription : février 2011
Messages : 17
Détails du profil
Informations personnelles :
Nom : Femme Nanou
Âge : 27
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 : 17
Points : 13
Points : 13
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 :
1
2
 
position = (tabImg.length-1);
et pas :
Code :
1
2
 
position = (tabImg.length);
Il sert à quoi le "-1" ? Je ne comprends pas vraiment la logique...
nanou777 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2011, 20h23   #5
Membre régulier
 
Avatar de SnowStyle
 
Homme
Développeur Web
Inscription : octobre 2005
Messages : 68
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : octobre 2005
Messages : 68
Points : 73
Points : 73
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.
SnowStyle est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/04/2011, 20h36   #6
Candidat au titre de Membre du Club
 
Femme Nanou
Étudiant
Inscription : février 2011
Messages : 17
Détails du profil
Informations personnelles :
Nom : Femme Nanou
Âge : 27
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 : 17
Points : 13
Points : 13
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 :
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 !
nanou777 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 03h25.


 
 
 
 
Partenaires

Hébergement Web