Acces a un champs texte d'un bouton [Résolu]

Signaler
Messages postés
5
Date d'inscription
mardi 25 novembre 2008
Statut
Membre
Dernière intervention
27 novembre 2008
-
Messages postés
5
Date d'inscription
mardi 25 novembre 2008
Statut
Membre
Dernière intervention
27 novembre 2008
-
Bonjour tout  le monde !

Je réalise actuellement mon premier site en Flash / XML et j'aurais besoin de vos lumières...

En vue de générer un menu a partir de mon fichier XML, j'ai créé un bouton "MenuItem" comprenant un rectangle et un champs de texte dynamique nommé "menu_txt".

A l'aide de mon script je parvient actuellement a créer et positionner les différents boutons composant mon menu mais je ne parvient pas a définir le contenu de mon champs texte pour chacun d'eux.

Je vous joins ci-dessous les différentes pièces vous permettant de jeter un oeil a mon travail et, je l'espere, de m'aider a resoudre ce probleme.

Fichier XML du menu :
{les links me serviront plus tard pour appeler une fonction changeant le contenu affiché}

<menu>
    About Us
    Mortgages
    Overseas buyers
    Reversions
    Wealth Management
    Contact us
</menu>

Fichier externe AS définissant ma classe MenuXML :

/* Création d'une classe héritant du ficher XML du menu */
/* OK : Fonctionne */
class MenuXML extends XML{
    public var menuItems:Array;
    public var parent:Object;
   
    public function MenuXML (fileXML:String, target:MovieClip){
        super();
        this.ignoreWhite = true;
        this.parent = target;
        this.menuItems = new Array();
        this.load(fileXML);
    }
   
    public function onLoad(ok:Boolean){
        if(ok){
            var listRoot:Object = this.childNodes;
            var listItem:Object = listRoot[0].childNodes;
            var listItemNb:Number = listItem.length;
            for (var i=0; i < listItemNb; i ++){
                var itemObj:Object = {};
                itemObj.title = listItem[i].firstChild.nodeValue;
                itemObj.link = listItem[i].attributes.link;
                this.menuItems.push(itemObj);
            }
                this.parent.loadMenu(this.menuItems);
        }
        else{
            trace("LOADING ERROR : Menu");
        }
    }
}

Script interne présent sur l'image clé 1 de mon calque action :

var XMLMenu:MenuXML = new MenuXML("website-menu.xml", this);

/* Fonction de publication du menu */
function loadMenu(xmlObj:Array) {
    var menuItemNb:Number = xmlObj.length;
    var itemX:Number = 101;
    var itemY:Number = 530;
    var largeurLigne:Number = 109;
    for (var i=0; i < menuItemNb; i ++){
        this.attachMovie("MenuItem", "menu"+i, i);
        this["menu"+i]._x = itemX;
        this["menu"+i]._y = itemY;
        this["menu"+i].menu_txt.htmlText = xmlObj[i].title;
        this["menu"+i].link = xmlObj[i].link;
        this["menu"+i].onRelease = function(){}
        trace("xmlObj["+i+"]]._x :"+this["menu"+i]._x);
        trace("xmlObj["+i+"]].title :"+xmlObj[i].title);
        trace("this[menu"+i+"].menu_txt.htmlText :"+this["menu"+i].menu_txt.htmlText);
        itemX += largeurLigne;
    }
}

Résultat des "trace( )" :

xmlObj[0]]._x :101
xmlObj[0]].title :About Us
this[menu0].menu_txt.htmlText :undefined
xmlObj[1]]._x :210
xmlObj[1]].title :Mortgages
this[menu1].menu_txt.htmlText :undefined
xmlObj[2]]._x :319
xmlObj[2]].title :Overseas buyers
this[menu2].menu_txt.htmlText :undefined
xmlObj[3]]._x :428
xmlObj[3]].title :Reversions
this[menu3].menu_txt.htmlText :undefined
xmlObj[4]]._x :537
xmlObj[4]].title :Wealth Management
this[menu4].menu_txt.htmlText :undefined
xmlObj[5]]._x :646
xmlObj[5]].title :Contact us
this[menu5].menu_txt.htmlText :undefined

Mes boutons sont correctement créés et positionnés mais leur champ texte est vide.
Je songe peut-etre a une erreur de ciblage mais j'avoue etre en panne de solutions.

J'espere que vos reponses me permettront d'y voir plus clair.

Merci d'avance 

1 réponse

Messages postés
5
Date d'inscription
mardi 25 novembre 2008
Statut
Membre
Dernière intervention
27 novembre 2008

Yohh vous savez quoi ? j'ai trouvé une solution !
 
Il semblerait que Flash pose problème lorsqu'un champ texte
fait partie d'un bouton mais que cela fonctionne a merveille avec un
movieClip !

 
Donc j'ai juste modifier dans la bibliothèque le type et voila le tour est joué !

Je me disais bien que logiquement la syntaxe me semblait correcte
 
Merci quand mm a ceux qui allaient prendre la peine de me répondre
Bonne journée !

 
(et vivement le week-end quand même non? )