• Super User

    Il problema è che <a href , viene letto come 'href' attributo XML.
    Per ovviare, potresti fare in questo modo:
    togli i tags html dall'xml, poi crei 2 attributi XML per ogni Child.
    In questo modo:

    
    - <MENU>
    <ITEM id="home" url="www.link1.com" text="testo del link">
    </MENU>
    
    
    

    A questo punto ti crei 3 arrays , che contengono rispettivamente, uno gli id, uno gli url e l'altro i testi dei link.
    Leggi l'xml e fai un push di ogni attributo nell'appropriato array.
    Adesso hai tutti i dati immagazzinati e con actionscript te li gestisci come meglio credi.


  • User

    Lo immaginavo...

    Devo scombussolare tutto il codice d'acapo...
    Ti chiedo un ultimo favore se puoi ... potresti riportare un esempio ("Molto pratico") qui nel post "mi sarebbe di grande aiuto".
    Anche solo un link sia del codice AS che del xml...
    Tipo dove ho messo i link nel xml tu mi porti un esempio come ottenere apposto di 1 link 2 link e poi me la sbrigo io...

    Grazie anticipatamente.


  • Super User

    XML:

    
    <?xml version="1.0" encoding="UTF-8"?>
    <MENU>
       <ITEM id="home" url="www.link1.com" text="testo del link"></ITEM>
       <ITEM id="gallery" url="www.link2.com" text="testo2 del link"></ITEM>
       <ITEM id="portfolio" url="www.link3.com" text="testo3 del link"></ITEM>
       <ITEM id="contacts" url="www.link4.com" text="testo4 del link"></ITEM>
       <ITEM id="visit us" url="www.link5.com" text="testo5 del link"></ITEM>
    </MENU>
    
    

    actionscript:

    
    var id_array:Array=new Array();
    var url_array:Array=new Array();
    var text_array:Array=new Array();
    var file_xml:XML=new XML();
    file_xml.ignoreWhite=true;
    file_xml.onLoad=function(yes:Boolean):Void
    {
     if(yes)
     {
      var n:Number=this.firstChild.childNodes.length;
      for(var i:Number=0;i<n;i++)
      {
       id_array.push(this.firstChild.childNodes*.attributes['id']);
       url_array.push(this.firstChild.childNodes*.attributes['url']);
       text_array.push(this.firstChild.childNodes*.attributes['text']);
      }
      trace(id_array);
      trace(url_array);
      trace(text_array);
     }
     else
      trace('XML error!');
    }
    file_xml.load('test.xml');
    
    

  • User

    OK...ho capito quello che vuoi dire con l'esempio ma se guardi bene i file e il codice che ho postato non e' che sia tanto differente di quello che hai postato adesso tu...!!!
    Adesso provo a spiegarmi cosi...

    Come faccio a ottenere un "Nodo Attributo" in XML senza cancellare quello che ho adesso che e' "MENU".

    Mi spiego meglio.

    Se io scrivo in action script :

    var id_array:Array=new Array();
    var url_array:Array=new Array();
    var text_array:Array=new Array();
    var file_xml:XML=new XML();
    file_xml.ignoreWhite=true;
    file_xml.onLoad=function(yes:Boolean):Void
    {
     if(yes)
     {
      var n:Number=this.firstChild.childNodes.length;
      for(var i:Number=0;i<n;i++)
      {
       id_array.push(this.firstChild.childNodes*.attributes['id']);
       url_array.push(this.firstChild.childNodes*.attributes['url']);
       text_array.push(this.firstChild.childNodes*.attributes['text']);
      }
      trace(id_array);
      trace(url_array);
      trace(text_array);
     }
     else
      trace('XML error!');
    }
    file_xml.load('test.xml');
    

    in XML mi trovo a scrivere :

    <MENU>
       <ITEM id="home" url="www.link1.com" text="testo del link"></ITEM>
       <ITEM id="gallery" url="www.link2.com" text="testo2 del link"></ITEM>
       <ITEM id="portfolio" url="www.link3.com" text="testo3 del link"></ITEM>
       <ITEM id="contacts" url="www.link4.com" text="testo4 del link"></ITEM>
       <ITEM id="visit us" url="www.link5.com" text="testo5 del link"></ITEM>
    </MENU>
    

    Adesso se io vorrei qualcosa di tipo cosi :

    <?xml version="1.0" encoding="UTF-8"?>
    //inizio primo settore del menu
    <MENU1>
       <ITEM id="link1" url="www.link1.com" text="testo del link"></ITEM>
       <ITEM id="link2" url="www.link2.com" text="testo2 del link"></ITEM>
       <ITEM id="link3" url="www.link3.com" text="testo3 del link"></ITEM>
       <ITEM id="link4" url="www.link4.com" text="testo4 del link"></ITEM>
       <ITEM id="link5" url="www.link5.com" text="testo5 del link"></ITEM>
    </MENU1> 
    //fine primo settore menu
    // inizio secondo settore menu
    <MENU2>
        <ITEM id="link1" url="www.link1.com" text="testo del link"></ITEM>
       <ITEM id="link2" url="www.link2.com" text="testo2 del link"></ITEM>
       <ITEM id="link3" url="www.link3.com" text="testo3 del link"></ITEM>
       <ITEM id="link4" url="www.link4.com" text="testo4 del link"></ITEM>
       <ITEM id="link5" url="www.link5.com" text="testo5 del link"></ITEM>
    </MENU2>
    //fine secondo settore menu
    //ecc...
    
    

    Dando comunque i dati alle stesse variabili e alle stesse caselle di testo ma cambiando ad ogni (settore del menu).
    CMQ mi sarebbe moolto di aiuto se guarderesti il file .zip che ho postato e apri il file .swf ti accorgi che c'e' un menu quadrato con 3 campi di testo:
    1 il titolo
    2 titolo temporaneo della riga (che poi diventa il titolo principale n1)
    3 descrizione (qui voglio aggiungere i miei link con l'XML)

    Per come' adesso descritto il menu funziona cosi che il link va a coprire l'intero movieclip chiamato Link con la funzione ```
    this._mc.Link.onMouseUp = function () {
    if (this.hitTest(_xmouse, _ymouse, true) && (this._parent.$active == true)) {
    getURL(this.$Link, this.$Tg);
    }

    all'interno a un campo txt dinamico che accetta la descrizione dal file XML infatti l'instanza e Description.
    
    Scusa forse faccio confusione ma penso che per te sarebbe facile riuscire a risolvere questo problema solo che se non ci intendiamo facciamo solo confusione.
    Perfavore fammi sapere se hai capito cosa voglio fare con questo menu.

  • Super User

    Ok, con l'xml che hai scritto tu,cioè questo:

    
    [LEFT]<?xml version="1.0" encoding="UTF-8"?>
    //inizio primo settore del menu
    <MENU1>
       <ITEM id="link1" url="www.link1.com" text="testo del link"></ITEM>
       <ITEM id="link2" url="www.link2.com" text="testo2 del link"></ITEM>
       <ITEM id="link3" url="www.link3.com" text="testo3 del link"></ITEM>
       <ITEM id="link4" url="www.link4.com" text="testo4 del link"></ITEM>
       <ITEM id="link5" url="www.link5.com" text="testo5 del link"></ITEM>
    </MENU1> 
    //fine primo settore menu
    // inizio secondo settore menu
    <MENU2>
        <ITEM id="link1" url="www.link1.com" text="testo del link"></ITEM>
       <ITEM id="link2" url="www.link2.com" text="testo2 del link"></ITEM>
       <ITEM id="link3" url="www.link3.com" text="testo3 del link"></ITEM>
       <ITEM id="link4" url="www.link4.com" text="testo4 del link"></ITEM>
       <ITEM id="link5" url="www.link5.com" text="testo5 del link"></ITEM>
    </MENU2>
    //fine secondo settore menu
    //ecc...[/LEFT]
    
    

    devi usare 2 cicli innestati e degli arrays bidimensionali.

    Con actionscript lo lavori in questo modo:

    
    var file_xml:XML=new XML();
    file_xml.ignoreWhite=true;
    file_xml.onLoad=function(yes:Boolean):Void
    {
     if(yes)
     {
      var n:Number=this.childNodes.length;
      for(var i:Number=0;i<n;i++)
      {
       trace(this.childNodes*.childNodes.length);
       var s:Number=this.childNodes*.childNodes.length;
       for(var j:Number=0;j<s;j++)
       {
        trace(this.childNodes*.childNodes[j].attributes['url']);
       }
      }
     }
     else
      trace('XML error!');
    }
    file_xml.load('test.xml');
    
    

  • User

    Scusami se mi sto facendo ripetitivo ma io credo che stiamo facendo confusione.

    Se vai qui vedi il menu (cosi come' adesso senza modifiche)
    http://apachepc.com/menu.swf

    Adesso se guardi bene il menu dove ce scritto Submenu 1 voglio inserire dei COLLEGAMENTI LINKS del tipo :

    Menu Hot Buys
    Submenu 1"link del testo=www.submenulink1.com target=_blank"
    Submenu 2"link del testo=www.submenulink2.com target=_blank"
    Submenu 3"link del testo=www.submenulink3.com target=_blank"
    Submenu 4"link del testo=www.submenulink4.com target=_blank"

    Questo avviene per ogni voce del menu tipo

    Menu Hardware
    Submenu 1"link del testo=www.submenulink1.com target=_blank"
    Submenu 2"link del testo=www.submenulink2.com target=_blank"
    Submenu 3"link del testo=www.submenulink3.com target=_blank"
    Submenu 4"link del testo=www.submenulink4.com target=_blank"

    Eccc....cc....ecc...con gli altri menu.

    Pensi che mi sono spiegato bene questa volta???
    Pensi che posso fare una cosa del genere???
    Pensi che mi potresti aiutare in un modo molto pratico???

    PS: scusami se sono ripetitivo e scusa per il tempo che ti faccio perdere ma penso che tu potresti "semplicemente" trovare il modo per far cio' che ti sto chiedendo,,, se riusciremo a capirci...

    Cmq per qualsiasi chiarezza fai riferimento al codice riportato nel post o nel file .zip


  • Super User

    Ciao Enzo,
    scusa ma io son sempre più convinto che tu non ascolti e non studi il codice che ti ho dato.
    Io non sono quì per creare le applicazioni di chi ne ha bisogno. Siete tanti e cerco di fare del mio meglio.
    Io ti do degli input e penso di avertene dati parecchi.


  • User

    OK Flep hai ragione...

    Ma io ho provato e riprovato il codice che mi hai dato tu , ma non riesco ad ottenere quello che io voglio.
    Il codice che ho postato non lho fatto io, perquesto non e facile modificarlo , perche quando provo a modificare qualcosa non mi funsiona un altra.

    Io pensavo che per uno come te che mangia pane e action script sarebbe stato un tantino piu' facile capire dov'e il problema e come risolverlo.

    Cmq.

    Se puoi almeno rivedere il mio codice e cercare di darmi una soluzione concreta "se puoi"...

    Tipo :
    esempio:"Se vuoi ottenere piu' link in quel riquadro che parlavi tu devi usare gli array , che li ottieni cosi

    this.Descriptions=New Array(); for(var j:Number=0;j<s;j++) 
    

    e poi se vuoi inserire dati dal'XML prova cosi...ecc.ecc.ecc...

    Ti ringrazio comunque per quello che mi hai suggerito e per quello che forse mi suggerirai.


  • Super User

    ...ma non riesco ad ottenere quello che io voglio.

    Io pensavo che per uno come te che mangia pane e action script sarebbe stato un tantino piu' facile capire dov'e il problema e come risolverlo.

    I forum sono per studiare, discutere ed approfondire aspetti generali.
    Anche per dare consigli ovviamente e, nel possibile, piccoli aiuti.

    Tu Enzo Slash stai chiedendo un servizio.

    Flep è un professionista e penso anch'io che, per uno come lui, analizzando il tuo caso e lavorandoci su una giornata, sia possibile trovare un'ottima ed adeguata soluzione.

    Ma la collaborazione che stà prestando al ForumGT è relativa alla moderazione, non al fornire servizi gratuiti agli utenti, e mi sembra che nel tuo caso specifico [relativo a te solo, non al forum nell'insieme] abbia già fatto veramente ben oltre del suo meglio.

    Qualsiasi lavoro tu faccia, dubito che tu lo offra gratuitamente; se è di una prestazione professionale che necessiti, meglio contattare in pvt qualcuno dei tanti tecnici esperti di questo forum.

    Compreso il bravo Flep. 🙂


  • User

    Hey Mamilu.

    Si ho capito quello che dite tu e flep.
    Non voglio assolutamente disturbare nessuno ne tantomeno far perdere giornate intere a nessuno.
    L'unica cosa che chiedevo e' che se uno come flep o un tecnico che conosce bene il codice Actionscript si fermasse solo per un minuto (60 secondi) non di piu' per scrivere 2 righe semplici in modo che un (Ignorante) come me riuscirebbe un tantino meglio a capire...
    Forse riuscirei nel mio intendo e creare dei semplici link nel mio menu.

    E in tutto rispetto e con la pretesa che non volgia offendere nessuno.
    Penso proprio che flep ne tanto meno un tectnico del forum abbiano guardato i file che ho postato neanche per un istante., e diciamo anche dovuto a quello che non smettevo di postare risposta dicendo ("non ho capito , come posso fare, ecc...ecc...").

    Cmq ritornando alla verita' e che io sono ancora fermo allo stesso problema di prima o forse un po peggio visto che mi sono confuso un bel po con i codici di flep visto che li ho usati e poi fatto dei casini. (questa non e colpa di flep assolutamente 'voglio precisare' e colpa mia che non so usare bene il codice).

    Cmq grazie a tutti e se ce ancora qualcuno che potrebbe in qualche modo riuscire a darmi un consiglio (Pratico) vi sarei molto grato.

    Ciao.


  • User

    OK scusate se insisto ma credo di essere vicino alla soluzione del mio problema.

    Io ho un actionscript cosi :

    Menu.prototype.SetVariables = function() {
    	// Set the vars readed from the xml file
    	this.Root = this.XmlData.childNodes;
    	this.Titles = new Array();
    	this.Links = new Array();
    	this.Tg = new Array();
    	this.Descriptions = new Array();
    	for (i=0; i<this.Root.length; i++) {
    		if (this.Root*.nodeName.toUpperCase() == "MENU") {
    			this.Nodes = this.Root*.childNodes;
    			for (k=0; k<this.Nodes.length; k++) {
    				this.Item++;
    				this.Titles.push(this.Nodes[k].attributes.id.toString());
    				this.Links.push(this.Nodes[k].attributes.page.toString());
    				this.Tg.push(this.Nodes[k].attributes.tg.toString());
    				this.Descriptions.push(this.Nodes[k].childNodes.toString());
    			}
    		}
    	}
    

    L'actionscript usato e vecchio 1.0.
    E un XML cosi :

    <MENU>
      <ITEM id="home" page="pagina1.html" tg="_blank">ccc</ITEM> 
      <ITEM id="works" page="pagina2.html" tg="_blank">I miei lavori, esperimenti e progetti</ITEM> 
      <ITEM id="curriculum" page="pagina3.html" tg="_blank">Il mio curriculum</ITEM> 
      <ITEM id="friends" page="pagina4.html" tg="_blank">Pagina dedicata agli amici</ITEM> 
      <ITEM id="credits" page="pagina5.html" tg="_blank">Onore e gloria a ...</ITEM> 
      <ITEM id="contact" page="pagina6.html" tg="_blank">Come contattarmi ...</ITEM> 
      </MENU>
    

    Ma voglio fare cosi :

    <MENUS>
    <Menu>
      <ITEM id="home" page="pagina1.html" tg="_blank">pagina1 submenu</ITEM> 
      <ITEM id="works" page="pagina2.html" tg="_blank">pagina2 submenu</ITEM> 
      <ITEM id="curriculum" page="pagina3.html" tg="_blank">pagina3 submenu</ITEM> 
      <ITEM id="friends" page="pagina4.html" tg="_blank">pagina4 submenu</ITEM> 
    </Menu>
    <Menu>
      <ITEM id="home" page="pagina1.html" tg="_blank">pagina1 submenu</ITEM> 
      <ITEM id="works" page="pagina2.html" tg="_blank">pagina2 submenu</ITEM> 
      <ITEM id="curriculum" page="pagina3.html" tg="_blank">pagina3 submenu</ITEM> 
      <ITEM id="friends" page="pagina4.html" tg="_blank">pagina4 submenu</ITEM> 
    </Menu> 
      </MENUS>
    

    cosa dovrei cambiare nel mio actionscript?
    Dai lo so che ho gia' chiesto troppo ma vorrei risolvere questo incubo che mi tormenta da settimane.

    Grazie.


  • User

    Volevo solo far sapere che sono cmq riuscito nel mio intendo...
    Adesso il mio menu funziona a dovere...

    Curiosity?Click[url=http://apachepc.com]here

    Grazie per tutto l'aiuto che mi avete dato e non...
    Un speciale saluto a flep e mamilu.

    Grazie ragazzi...