Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1757 connectés 

  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  [Actionscript & XML] acces a un champs texte d'un bouton

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Actionscript & XML] acces a un champs texte d'un bouton

n°1816365
La_puce
Posté le 25-11-2008 à 14:00:32  profilanswer
 

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>
    <item link='about_us'>About Us</item>
    <item link='mortgages'>Mortgages</item>
    <item link='overseas_buyers'>Overseas buyers</item>
    <item link='residential_reversions'>Reversions</item>
    <item link='wealth_management'>Wealth Management</item>
    <item link='contact_us'>Contact us</item>
</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.firstChild.nodeValue;
                itemObj.link = listItem[i].attributes.link;
                this.menuItems.push(itemObj);
            }
                this.parent.loadMenu(this.menuItems);
        }
        else{
            trace("LOADING ERROR : Menu" );
        }
    }
}
 
 
[i]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.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;
    }
}
 
 
[i]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-être a une erreur de ciblage mais j'avoue être en panne de solutions.
 
J'espère que vos réponses me permettront d'y voir plus clair.
 
Merci d'avance   :)

mood
Publicité
Posté le 25-11-2008 à 14:00:32  profilanswer
 

n°1816395
abais
Posté le 25-11-2008 à 14:45:20  profilanswer
 

Donne nous ta scene zippé plutôt.
Si AS2, retrouve tu la valeur des textes dans le débuggueur ?


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
n°1816402
abais
Posté le 25-11-2008 à 14:48:56  profilanswer
 

tu l'as toi même mis en gras !

Code :
  1. this["menu"+i].menu_txt.htmlText = xmlObj.title;


ne serait ce pas plutot
this["menu"+i].menu_txt.htmlText = xmlObj[i].title;


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
n°1816415
La_puce
Posté le 25-11-2008 à 15:01:02  profilanswer
 

Si désolée mais c'est a cause de la mise en italique automatique du champs de rédaction des messages...
je vous le remets ici en espérant cette fois me mon [i ] ne soit pas transformé.... j'ajoute un espace en espérant que ça suffira....
 
 
var XMLMenu:MenuXML = new MenuXML("website-menu.xml", this);
 
/* Fonction loadMenu : get the content of the menu from the tab created by onLoad() and print the result */
function loadMenu(xmlObj:Array) {
 var menuItemNb:Number = xmlObj.length;
 var itemX:Number = 101;
 var itemY:Number = 530;
 var widthLine:Number = 160; // width of the button
 for (var i=0; i < menuItemNb; i ++){
  this.attachMovie("MenuItem", "menu"+i, i); // call the button from the librairy called "MenuItem"
  this["menu"+i]._x = itemX; // positionning X
  this["menu"+i]._y = itemY; // positionning Y
  this["menu"+i].menu_txt.htmlText = xmlObj[i ].title; // add the texte of the button in the textzone of the button called "menu_txt"
  this["menu"+i].link = xmlObj[i ].link; // save the link to do the onRelease action
  this["menu"+i].onRelease = function(){}
  itemX += widthLine; // define the X position of the next menu item
  /* TEST */
  trace("this[menu"+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);
 }
}


Message édité par La_puce le 25-11-2008 à 15:03:22
n°1816450
La_puce
Posté le 25-11-2008 à 15:25:32  profilanswer
 

Yohh vous savez quoi ? j'ai trouvé une solution ! :D
 
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 ont pris la peine de me répondre ;)
Bonne journée !
 
(et vivement le week-end quand même non? :P)

n°1816481
abais
Posté le 25-11-2008 à 16:14:37  profilanswer
 

bon à savoir, AS2 donc je présume ^^


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
n°1816547
La_puce
Posté le 25-11-2008 à 17:29:53  profilanswer
 

oui, on est pas encore passé a as3 ici.... trop petit structure je suppose.
enfin voila :D c'était la bonne nouvelle de l'après-midi :P


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  [Actionscript & XML] acces a un champs texte d'un bouton

 

Sujets relatifs
XHTML -> XSL -> XML, même le plus simple ne fonctionne pas !Affichage de champs de plusieurs tables ds formulaire [ACCESS/VBA]
Nombre max de champs dans une tableRecherche plein texte PDF / indexation
actionscript keypressCocher un bouton radio en javascript
comment scroller dans une pile de texte (alignée en bas)?Générer des graphiques et pdfiser le résultat depuis un fichier texte
[Résolu] XML+XSL vers XHTMLFlux XML valide mais avec des erreurs ....
Plus de sujets relatifs à : [Actionscript & XML] acces a un champs texte d'un bouton


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR