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 28/02/2008, 21h40   #1
Invité de passage
 
Inscription : février 2008
Messages : 2
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2
Points : 0
Points : 0
Par défaut Problème de variable

Bonjour à tous,

Je développe actuellement pour un site dont je suis membre, une petite appli de mots fléchés en flash.

La dernière chose que je veux faire est d'afficher le top 5 des scores.

J'ai donc une page php qui me renvoi des variables après interrogation de la base.

J'utilise une fonction loadvars pour les récupérer. Jusque là, pas de soucis. Mon problème et que je demande la récupération de 5 variables, si ma base n'en contient que 3, mon dynamique text m'affiche undefined ce qui ne me choc pas puisque c'est vrai lol

Du coup, j'aimerais faire une boucle qui test si la valeur est undefined et mettre juste un espace pour que mon champ text soit vide.

Précision, le php m'envoie les variables sous la forme : pos1=toto&pos2=titi ...

Voici ma fonction pour plus de compréhension.

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
31
32
33
34
35
36
37
38
39
40
41
42
function recup_scores () {
 
	var recup_scores = new LoadVars ();	
	recup_scores.onLoad = function(success) {
 
		if (success) {
			pos1 = recup_scores.pos1;
			pos2 = recup_scores.pos2;
			pos3 = recup_scores.pos3;
			pos4 = recup_scores.pos4;
			pos5 = recup_scores.pos5;
 
			score1 = recup_scores.score1;
			score2 = recup_scores.score2;
			score3 = recup_scores.score3;
			score4 = recup_scores.score4;
			score5 = recup_scores.score5;
 
			temps1 = recup_scores.temps1;
			temps2 = recup_scores.temps2;
			temps3 = recup_scores.temps3;
			temps4 = recup_scores.temps4;
			temps5 = recup_scores.temps5;
 
			for (i=1;i<6;i++) {
				var cpt:String=i;
				if (this['pos'+cpt] == undefined) {
					this['pos'+cpt] = ' ';
					this['score'+cpt] = ' ';
					this['temps'+cpt] = ' ';
				}
 
			}
 
		}
	}
recup_scores.sendAndLoad("mf_recup_scores.php", recup_scores, "POST");
 
}
 
 
recup_scores ();
Les variables sont bien récupérées. le test if fonctionne depuis que j'ai converti i en string. En revanche l'attribution de la valeur ne fonctionne pas. J'ai essayé eval, set ça n'a rien donné, mon champ dynamique affiche toujours undefined. Bien entendu, si après le test, je colle un pos4=" "; ça fonctionne nickel.

Merci d'avance
FumSteph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2008, 23h25   #2
Membre émérite
 
Avatar de thecaptain
 
Étudiant
Inscription : décembre 2003
Messages : 916
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2003
Messages : 916
Points : 898
Points : 898
Salut,

Oui c'est tout à fait normal Car dans la ligne 'this["blabla"]', le this fait référence à l'objet LoadVars en cours (dans lequel tes champs de texte n'existent pas). Petit exemple de procédure :
Code :
1
2
3
4
5
var me:MovieClip = this;
lv.onLoad = function(ok:Boolean):Void
{
   me["champDeTexte"].text = "test";
}
@++
__________________
API ScrollBar (AS2)
Masapi (Massive Loading API) (AS3)
Lost in AStorm
thecaptain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/02/2008, 03h04   #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
pourtant this[] c'est sensé être similaire à un eval() non? rien à voir avec this.
de plus il dit qu'il a essayer avec un eval() à la place
puis ce n'est pas directement les champs de text mais les var attribué aux champs qu'il utilise, sinon y aurait des .text dans son exemple.

le souci ca doit etre dans l'utilisation des variables dynamique, et je ne m'en suis jamais servi sous flash encore
je pense en tout cas qu'un eval() va donner pour pos1 par exemple: toto = ' ';
si ça fait ça c'est normal que flash ne fait pas ce que tu veux, tu as essayer un 'pos'+cpt = ?



je sais pas trop en tout cas, sinon faire comme a dit thecaptain, en utilisant directement le champ de texte au lieu d'une variable attribué, là un eval("pos"+cpt).text = fonctionne bien
SnowStyle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/02/2008, 09h49   #4
Invité de passage
 
Inscription : février 2008
Messages : 2
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2
Points : 0
Points : 0
Merci de vos réponses

Captain, je ne vois pas trop comment intégrer ta démarche dans mon code Désolé, mais j'ai commencé le flash ya un mois lol

J'ai bien essayé de déclaré la variable comme tu me l'indique puis du l'utiliser dans la boucle for mais sans succès.

Du coup en attendant je triche avec ma page php, je test la boucle et si elle est inférieur à 5 je retourne quand même des variables avec un espace (je maitrise un poil plus php que flash lol).

Je n'en reviens pas, j'ai fais une fonction assez complexe pour valider les mots dans la grille et je bloque sur une bétise comme ça

Merci pour votre aide en tout cas
FumSteph est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h15.


 
 
 
 
Partenaires

Hébergement Web