cs_inaden
Messages postés618Date d'inscriptionmercredi 4 avril 2007StatutMembreDernière intervention27 août 2010
-
20 avril 2009 à 10:56
cs_inaden
Messages postés618Date d'inscriptionmercredi 4 avril 2007StatutMembreDernière intervention27 août 2010
-
20 avril 2009 à 12:26
Bonjour,
voilà, je reprends les bases de l'as3... ou plutôt je les prends... apprends. Bref, je suis sur les boucles.
Exercices simples :
var personnage:Object={prenom:"Bobby",age:50};
//boucle donnant les propriétés de l'objet
for(var p:String in personnage){
trace("les propriétés du personnage sont : "+p);
}
//boucle for each accédant aux valeurs d'un objet
for each ( var valeur:* in personnage){
trace("les valeur du personnage sont : "+valeur);
}
J'ai voulu afficher les deux en même temps pour avoir un trace qui me donnerait :
la propriété prenom du personnage a pour valeur Bobby
J'ai essayé de croiser les boucle mais ce n'est pas satisfaisant... deux fois le résultat, une bonne attribution, et une mauvaise. J'ai essayé de créer un tableau pour récupérer les valeurs de chaque boucle, mais je ne récupère, au mieux que la première valeur, en plus ma méthode pour récupérer les valeurs étaient très artificelle... bref ça marche pas.
Quelqu'un a-t-il une piste pour arriver au résultat escompté.
Merci d'avance.
pegase31
Messages postés6138Date d'inscriptiondimanche 21 décembre 2003StatutModérateurDernière intervention 4 septembre 201312 20 avril 2009 à 11:55
Salut,
le soucis c'est que dans "for each", la valeur de la variable donnée sera fonction de son type et du nombre de données contenues dans l'objet ciblé.
prenons un exemple :
var toto:Object = {var1:"oui", var2:128, var3:new Point(128,164), var4:["abs", Math.sqrt(128), 12]}
for each(var tata:* in toto) {
trace (tata);
}
nous ressort :
abs,11.313708498984761,12
oui
128
(x=128, y=164)
Ce qui prouve bien qu'il n'y a pas d'ordres dans un object ... et donc que tu ne peux pas savoir par cette méthode quelle variable est ciblée.
Ce que tu cherches à faire est plutôt axé XML et tu dois, pour ça, avoir les noms des champs à cibler.
Le for-each servirait plutôt à parcourir nue liste de noeuds dans les quels tu piocherais les infos pour les formater à ta guise, tels que :
var xml:XML =
<main>
<member nom="jean" age="12" />
<member nom="pierre" age="18" />
<member nom="alain" age="16" />
</main>
var list:XMLList = xml.member;
for each(var tata:XML in list) {
trace ("les valeur du personnage sont : age="+tata.@age, "nom="+tata.@nom);
}
Nous ressort bien :
les valeur du personnage sont : age=12 nom=jean
les valeur du personnage sont : age=18 nom=pierre
les valeur du personnage sont : age=16 nom=alain
cs_bali_balo
Messages postés1378Date d'inscriptionsamedi 9 octobre 2004StatutMembreDernière intervention 1 novembre 20101 20 avril 2009 à 11:55
PARDON,
CECI FONCTIONNE (j'ai testé !)
var personnage:Object={prenom:"Bobby",age:50};
//boucle donnant les propriétés de l'objet
for(var p:String in personnage){
trace("les propriétés du personnage sont : "+p);
}
//boucle for each accédant aux valeurs d'un objet
for( var valeur:String in personnage){
trace("les valeur du personnage sont : "+personnage[valeur]);
}
cs_inaden
Messages postés618Date d'inscriptionmercredi 4 avril 2007StatutMembreDernière intervention27 août 20102 20 avril 2009 à 12:26
Bonjour et merci à tous pour vos réponses , leur justesse et leur rapidité.
Le script d'Orange73 fonctionne, mais je comprends qu'il doit être plus judicieux d'utiliser la méthode de Pégase31 dans une réelle construction d'utilisation d'objet.
Merci à tous, et je vais continuer ma lecture de Pratique d'action script 3 de Thibault Imbert qui m'a l'air d'être une bonne base à l'apprentissage d'AS3.
Encore merci et vive Flashkod et ses merveilleux participant !!!!