Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    menu in flash con contenuti xml

    ciao a tutti ragazzi!
    spero davvero che voi possiate darmi una mano perche oltre a morire di caldo sto impazzendo senza trovare soluzione!!
    allora la situazione è questa:
    devo realizzare un menu i cui bottoni sono definiti da un xml e possono variare continuamente.
    per fare cio ho modificato un esempio preso da internet il quale però ha i valori dei pulsanti gia definiti nell actionscript stesso all interno di una variabile del genere:

    list = ["pulsante1", "pulsante2", "pulsante3", "pulsante4", "pulsante5"];

    prendendo i valori attraverso un ciclo for dal file xml invece (si tratta di nodi posizionati tutti allo stesso livello e con lo stesso nome ma con attributi diversi) i miei nomi pulsanti li visualizzo cosi nella finestra di output:

    list ulsante1
    list ulsante2
    list ulsante3
    list ulsante4
    list ulsante5

    come faccio a fare in modo di avere una variabile come quella prima citata con questi risultati dati dal ciclo for!?
    oppure come faccio a modificare il codice a mio favore (presumo si debba cambiare la funzione while e il modo di recuperare il nome...) ?

    per semplificarvi nell aiutarmi vi posto il codice originale:

    list = ["pulsante1", "pulsante2", "pulsante3", "pulsante4", "pulsante5"];
    function buildList() {

    var i = -1;
    while (++i < list.length) {
    name = "pulsante" + i;
    _root.display.list.attachMovie("pulsante", name, i);
    display.list[name].nomepulsante.text = list[i];
    }
    }


    ciò che ho modificato io è l aver sostituito la variabile list iniziale con:


    var fileMenuXML = new XML();
    fileMenuXML.ignoreWhite = true;
    fileMenuXML.load("prova.xml");
    fileMenuXML.onLoad = function(success){

    if(success){

    elencoLista=new Array;
    elencoLista = this.firstChild.firstChild.childNodes;
    for (i=0; i<=elencoLista.length; i++) {
    if (elencoLista[i].nodeName == "stanza") {
    list=(elencoLista[i].attributes.nom);
    trace ("list :"+list);

    }
    }
    }
    }

    vi ringrazio sin da ora per quello che potrete fare per me!

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao

    La variabile list, scritta in quel modo, non è altro che un array.
    Nel ciclo for, una volta caricato l'xml, potrai aggiungere i valori, a list, col metodo push.

    codice:
    if (success) {
    	var elencoLista = new Array();
    	elencoLista = this.firstChild.firstChild.childNodes;
    
    	list = new Array();
    
    	// qui sarebbe meglio i<elencoLista.length perchè la proprietà length parte da 1 e non da 0
    	for (i=0; i<=elencoLista.length; i++) {
    		if (elencoLista[i].nodeName == "stanza") {
    
    			list.push(elencoLista[i].attributes.nom);
    
    		}
    	}
    }
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Innanzitutto mille grazie per la disponibilità e l interesse!!
    adesso facendo un trace di list ho:

    elenco list :STANZA1
    elenco list :STANZA1,STANZA2
    elenco list :STANZA1,STANZA2,PROVA5
    elenco list :STANZA1,STANZA2,PROVA5,STANZA3
    elenco list :STANZA1,STANZA2,PROVA5,STANZA3,PROVA4

    però a me servirebbe solo l'ultimo di questi 5 poichè è l unico che contiene tutti i contenuti...
    come fare!?

    ancora grazie!!

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Lo hai..

    Se metti il trace dentro il ciclo for è normale che ottieni quell'output, perché l'array list viene "costruito" proprio attraverso il ciclo for.
    Se fai un trace dopo il ciclo vedrai che il risultato è quello giusto.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    DHO!!
    hai ragione!
    grazie mille ma a volte vado nel pallone e non vedo nemmeno le cose piu banali!!
    grazie mille!!!
    a presto!!

  6. #6
    ehm...sono sempre io!!
    sempre impantanata con lo stesso menu...
    questa volta però il problema è...come associare ad ogni pulsante creato con attachMovie un'azione!?
    tale azione è un loadMovie di un file swf il cui nome viene catturato sempre dallo stesso file xml nello stesso identico modo in cui cattura i nomi di cui precedentemente...
    posto il mio script mal riuscito, magari sapete dirmi dove sbaglio!

    elencoLista=new Array;
    elencopuls=new Array;
    tipi=new Array;
    elencoLista = this.firstChild.firstChild.childNodes;
    for (i=0; i<elencoLista.length; i++) {
    if (elencoLista[i].nodeName == "stanza") {
    elencopuls.push(elencoLista[i].attributes.nom);
    tipi.push(elencoLista[i].attributes.tip);

    }
    }
    tipologie=tipi;
    list=elencopuls;
    var i = -1;
    while (++i < list.length) {
    name = "pulsantemenu2" + i;
    _root.display.list.attachMovie("pulsantemenu2",nam e,i);
    display.list[name].menutxt.text = list[i];
    trace("listatipi:"+tipologie[i]);
    display.list[name].onRelease=function(){
    trace("listatipi2:"+tipologie[i]);
    cont_mc.loadMovie(tipologie[i]+".swf");

    };

    }

    devo premettere che nelle ultime righe di codice...prima della funzione onRelease il trace da il risultato desiderato mentre dopo da undefined!perche!?!?ho provato a mettere _root. prima ma nulla da fare.
    grazie!

  7. #7
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao.
    Il tuo problema è già stato discusso.
    Ecco una recente discussione, per un problema analogo, in cui viene indicata una possibile soluzione:
    http://forum.html.it/forum/showthrea...ostid=11677684

    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.