2012-05-02 4 views
0

Je suis nouveau à ActionScript et je veux écrire le code suivant dans le style de boucle. Il est un menu chargé à partir d'un fichier xmlactionscript 3.0 Menu de liste XML dans la boucle for

nav_menu.nav_1.text=gallery_xml.gallery[0][email protected]; 
nav_menu.nav_2.text=gallery_xml.gallery[1][email protected]; 
nav_menu.nav_3.text=gallery_xml.gallery[2][email protected]; 
nav_menu.nav_4.text=gallery_xml.gallery[3][email protected]; 
nav_menu.nav_5.text=gallery_xml.gallery[4][email protected]; 
nav_menu.nav_6.text=gallery_xml.gallery[5][email protected]; 
nav_menu.nav_7.text=gallery_xml.gallery[6][email protected]; 

J'ai essayé écrire comme un tableau. Le résultat du tracé du tableau était correct. Mais je ne sais pas comment mettre le tableau dans la zone de texte dynamique ...

Merci beaucoup pour votre aide.

Répondre

0

Je pense que vous cherchez une boucle for Essayez quelque chose comme ceci, en supposant que la galerie est en fait un tableau.

for(var i:int = 0 ; i < gallery_xml.gallery.length ; i++){ 
    var menuText:int = i + 1; //since it looks like your nav_ text fields are not 0 indexed 
    nav_menu['nav_' + menuText].text = gallery_xml.gallery[i][email protected]; 
} 

Ceci commencera à 0 dans votre tableau de galerie et continuera jusqu'à 6 (votre longueur de tableau). La var i représentera l'index actuel dans le tableau. i + 1 semble être le champ de texte correspondant

+0

Je ne sais pas pourquoi "gallery_xml.gallery.length" ne fonctionne pas. Après que je l'ai changé à "8", il montre la liste de menu, mais "TypeError: Erreur # 1010: Un terme est indéfini et n'a aucune propriété." est également apparu dans la sortie. – user1371172

+0

essayez d'utiliser la longueur() – francis

+0

cela fonctionne :) merci – user1371172

1

Utilise d'abord la classe XMLList comme belove.

var list:XMLList = gallery_xml.gallery; 

Ensuite, lorsque vous créez une boucle, essayez de créer des éléments de menu dynamiquement. Vous devez ajuster les emplacements de menu en fonction des besoins.

var nav_menu:Sprite = new Sprite(); 
addChild(nav_menu); 
var navItem:Array = []; 

var forX:Number = 0; 
for(var i:int = 0; i < list.length(); i++){ 
    navItem[i] = new NavItem(); 
    navItem[i].tx_txt.autoSize = TextFieldAutoSize.LEFT; 
    navItem[i].tx_txt.text = list[i][email protected]; 
    navItem[i].x = forX; 
    forX += navItem[i].width + 20; //(horizontal order with 20px space) 
    nav_menu.addChild(navItem[i]); 
} 

Vous devriez avoir un NavItem avec tx_txt champ dans la bibliothèque, ou une classe NavItem (ce qui est une façon difficile pour les débutants).

Remarque: J'ai écrit le code dans une page Web et il peut y avoir des erreurs, mais c'est la voie à suivre.