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

    Mappa interattiva con file xml

    Salve a tutti, spero di non aver sbagliato sezione nell'inserire questo post.

    QUalche giorno fa ho scaricato da questo sito un movie con la mappa del mondo interattiva che richiama i dati da un file xml.

    http://flash.html.it/movie/vedi/1173/mappa-del-mondo/ <==== il link da qui scaricarlo

    Di default lui richiama dal file 2 o 3 campi che so presenti nel file xml.

    Il mio problema consiste nel non saper modificare gli as per richiamare gli altri campi presenti del file xml.

    Vi posto un pò di codice, ringrazio anticipatamente chiunque possa aiutarmi in questa cosa.

    Codice presente nel flash:
    codice:
    import flash.events.MouseEvent;
     import flash.display.MovieClip;
     import flash.display.SimpleButton;
     import flash.net.URLLoader;
     import flash.net.URLRequest;
     import flash.events.Event;
     
     var array:Array = new Array();               
     /*
     ("Argentina"),
     ("Chilli"),
     ("Bolivia"),
     ("Paraguay"),
     ("Brazil"),
     ("Uruguay"),
     ........eccc tutti i paesei.....
     ("Madagaskar"),
     ("Australia"),
     ("New Zealand"),
     ("Svalbard And Jan Mayen")
     */
                                
     var xml:XML;
     var uLoader:URLLoader = new URLLoader();
     var tempName:String="";
     var oldBtn:String;
     mcDesRight.visible = false;
     mcDesLeft.visible = false;
     uLoader.load(new URLRequest("Data.xml"));
     uLoader.addEventListener(Event.COMPLETE,OnXMLCompl  ete);
     var cont:MovieClip;
     
     function OnXMLComplete(e:Event){
         xml = new XML(e.target.data);
         for(var i:Number = 0;i<xml.country.length();i++){
             array.push({cname:xml.country[i].cname ,  dtime:xml.country[i].dtime , cost:xml.country[i].cost ,store:  xml.country[i].store , freedelivery:xml.country[i].freedelivery});
         }
         //add Eventlisterns for country
         for(var r:Number=0;r<array.length;r++){
             tempName = (r<10)?"00"r<100)?"0":"";"";
             (SimpleButton)(getChildByName("btn"+tempName+r)).a  ddEventListener(MouseEvent.MOUSE_OVER,onOver);
             (SimpleButton)(getChildByName("btn"+tempName+r)).a  ddEventListener(MouseEvent.MOUSE_OUT,onOut);
         }   
     }
     function onOver(e:MouseEvent){   
         e.target.alpha = 0.5;
         e.target.addEventListener(MouseEvent.MOUSE_MOVE,on  Move);
          //trace(array[int(e.target.name.substr(3))]);
     }
     function onOut(e:MouseEvent){
         mcDesRight.visible = false;
         mcDesLeft.visible = false;
         e.target.alpha = 1;
         e.target.removeEventListener(MouseEvent.MOUSE_MOVE  ,onMove);
     }
     function onMove(e:MouseEvent){
         if(mouseX>mcChangePoint.x){
             cont = mcDesLeft;
         }else{
             cont = mcDesRight;
         }
         if(e.target.name == "btn027"){
             cont = mcDesRight;
         }
         cont.visible = true;
         cont.x = mouseX+10;
         cont.y = mouseY+10;
         cont.txtTitle.text = array[int(e.target.name.substr(3))].cname.toUpperCase();
         cont.txtDtime.text = "Area Manager :"+array[int(e.target.name.substr(3))].dtime;
    Codice presente nel file xml (solo una porzione per farvi capire come funziona tutto.)

    codice:
    <countrylist>
             <country>
                    <cname>Argentina</cname>
                    <dtime> 7-8 Days </dtime>
                    <cost> 20 Euro </cost>
                    <store> Currently no </store>
                    <freedelivery> Free delivery over 100 Euro</freedelivery>
             </country>
     </countrylist>

  2. #2
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    Ciao

    Nell' Array che si popola dopo la lettura dell'xml hai già tutti i dati presenti nell'xml e in questa riga:

    Codice PHP:
    cont.txtDtime.text "Area Manager :"+array[int(e.target.name.substr(3))].dtime
    viene aggiunto l'elemento "dtime" al campo di testo: "txtDtime".

    Se vuoi aggiungere altri elementi ti basta mettere un + e fare riferimento agli altri elementi dell'.xml ovvero:

    Codice PHP:
    cont.txtDtime.text "Text from XML : "+array[int(e.target.name.substr(3))].dtime + array[int(e.target.name.substr(3))].cost + array[int(e.target.name.substr(3))].store + array[int(e.target.name.substr(3))].freedelivery

  3. #3
    siiiiiii!

    Funziona alla grande!

    Sei stato davvero fenomenale!! Grazie di cuore!!! mi hai davvero tolto da una spiacevole situazione!

    Ti chiedo ancora una cosetta, c'è un modo per dividerli su più righe? cioè così adesso escono tutti i dati su di un'unica riga e senza spazi.
    Io invece vorrei dividerli in righe con questa formattazione:

    codice:
    cont.txtDtime.text = "Area Manager :"+array[int(e.target.name.substr(3))].dtime + "Email :"+array[int(e.target.name.substr(3))].cost +"Phone :" +array[int(e.target.name.substr(3))].store +"Mobile :" +array[int(e.target.name.substr(3))].freedelivery;
    Praticamente andare a capo ad ogni voce,

    Area Manager : Tizio Caio
    Email : tizio.caio@tiziocaio.it
    Phone : 000000000
    Mobile : 111111111

    Grazie ancora davvero tanto!!!

  4. #4
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    Originariamente inviato da Stefanuccio1926
    Ti chiedo ancora una cosetta, c'è un modo per dividerli su più righe? cioè così adesso escono tutti i dati su di un'unica riga e senza spazi.
    Se vuoi avere uno spazio vuoto tra un elemento e l'altro devi aggiungerlo usando le virgolette es:

    Codice PHP:
    cont.txtDtime.text "Area Manager :" + array[int(e.target.name.substr(3))].dtime " " "Email :"+array[int(e.target.name.substr(3))].cost " " "Phone :" + array[int(e.target.name.substr(3))].store " " "Mobile :" +array[int(e.target.name.substr(3))].freedelivery
    Praticamente fra un elemento e l'altro aggiungi dopo il +
    " " +

    Se invece vuoi che ogni elemento sia posizionato su una sua riga specifica ti consiglio di creare nuovi campi di testo dinamico e quindi separare gli elementi, ognuno nel suo campo di testo specifico.
    Il codice sarà poi così:

    Codice PHP:
    cont.txtDtime.text "Area Manager :"+array[int(e.target.name.substr(3))].dtime;
    cont.nuovocampo1.text "Email :"+array[int(e.target.name.substr(3))].cost;
    cont.nuovoCampo2.text "Phone :" + array[int(e.target.name.substr(3))].store;
    cont.nuovoCampo3.text "Mobile :" +array[int(e.target.name.substr(3))].freedelivery
    Ovviamente ai campi di testo dinamico puoi mettere il nome che vuoi, l'importante è che siano annidati dentro i clip "mcDesLeft" e ""mcDesRight""con i loro nomi istanza.

    ciao

  5. #5
    Ehm quanta pazienza stai avendo con me! :P

    Perdonami, il primo metodo mi è più che chiaro, il secondo che è quello per il quale opterei, mi risulta un pò difficile da effettuare poiché non ho tantissima esperienza in programmazione.

    Mi spiegheresti meglio il passaggio delle istanza ecc.?

    Magari con un esempio applicatro al codice che ho già.

  6. #6
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    E' molto semplice:

    1. Apri il file "bannerXMLCS4.fla" che si trova nella cartella "source".
    2. Sulla timeline, posizionati sul fotogramma 5 e vedi che sullo stage ci sono 2 clip a forma di fumetto (che sono poi i MovieClip che vedi apparire al mouse sopra la mappa).
    3. Clicca su uno di questi clip e vedi che nelle proprietà appare il suo nome istanza: mcDesLeft e mcDesRight.
    4. Fai un doppio click su uno di questi clip e entri nella modalità editor di un pulsante.
    5. Sul livello più alto, ci sono dei campi di testo dinamici, cliccali per vedere il loro nome istanza nelle proprietà.
    6. Seleziona uno di questi campi e con il tasto destro del mouse fai "copia" e poi "incolla in posizione".
    7. A questo punto hai una copia del campo di testo posizionato esattamente sopra l'originale, usa i tasti cursore per spostarlo più in basso e cambia il suo nome istanza nelle sue proprietà.
    8. Ripeti l'operazione per altri campi di testo e stessa cosa devi fare per l'altro MovieClip che c'è sullo stage (altrimenti generi un errore in quanto entrambi i movieClip devono contenere le stesse istanze).
    9. Dovrai poi modificare le grafiche dei 2 MovieClip in modo che i campi di testo stiano dentro il suo fumetto di sfondo e dalle proprietà del campo di testo dinamico* puoi modificare dimensioni carattere. colore e altro.
    10. Non ti rimane altro che modificare il codice con le righe che ti ho riportato sopra le quali, assegnano il diverso contenuto a ogni campo di testo.

    *Non dimenticare di incorporare i caratteri.


    ciao

  7. #7

    olè!

    Ottimo!!! ci sono riuscito alla grande! Grazie 1000!

  8. #8

    Ops ancora un problemino

    Ciao, scusa se ti disturbo ancora Sleter.

    Dopo che tutto funzionava benissimo grazie al tuo aiuto, mi sono ritrovato con un piccolo problemino.

    Il campo <cost> che nel mio caso contiene le email, funziona perfettamente tranne che per il paese Italia, perchè ho cambiato una email che è di 3-4 caratteri più lunga delle altre inserite negli altri paesi.

    Questo problema lo mostra solo con IE.

    Praticamente lo lascia vuoto.

    Hai idea di come io possa ovviare a questa cosa?

    grazie anticipatamente per la tua disponibilità.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.