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

    problema con xml e visualizzazione array di dati

    Ho la seguente funzione (che ho messo in un package Document Class) che legge un file XML e fa una serie di operazioni tra cui restituirmi il valore arrivo che io chiamerò destinazione. La funzione mi intercetta soltanto 3 destinazioni e le altre successive non le considera!! e se nel file xml ne metto meno di tre mi da addirittura errore!!

    come devo fare? Come mai?

    Codice PHP:
    package lib {
        
    import flash.display.*;
        
    import flash.events.Event;
        
    import flash.net.URLRequest;
        
    import lib.utility.*;
        
    import flash.events.MouseEvent//per gestire eventi mouse
        
        
    public class Game extends MovieClip {
            private var 
    parser:XMLLoader;
            public var 
    dati:Array = new Array();
            
            public function 
    Game ():void {
                
    parser = new XMLLoader("data/percorsi.xml");
                
    parser.addEventListener(Event.COMPLETEcomplete);
            }
            private function 
    complete (evt:Event null):void {
                
    evt.target.data as Array;
                
    evt.target.data.forEach(callback);
            }
            private function 
    callback (e:*, i:uinta:Array):void {
               
    trace("destinazione:"+e.arrivi);            
            }
            
        }

    Questo è il file XML che legge:
    Codice PHP:
    <?xml version="1.0" encoding="UTF-8"?>
    <porti>
            <percorso id="1">
                <partenza coords="547.5,271.4">Cagliari</partenza>
                <arrivo h="06:44" h_m="17:08" h_t="12:41" coords="233,234">Roma</arrivo>
                <arrivo h="06:45" h_m="21:00" h_t="12:42" coords="253,244">Genova</arrivo>
                <arrivo h="06:46" h_m="18:15" h_t="12:43" coords="243,114">Napoli</arrivo>            
            </percorso>
            <percorso id="2">
                <partenza coords="536,86.6">Genova</partenza>
                <arrivo h="06:47" h_m="17:09" h_t="12:45" coords="143,154">Lecce</arrivo>
                <arrivo h="06:48" h_m="21:01" h_t="12:46" coords="1123,434">Cagliari</arrivo>
                <arrivo h="07:48" h_m="25:01" h_t="13:46" coords="1123,434">Cagliari</arrivo>
                <arrivo h="06:49" h_m="18:16" h_t="12:47" coords="333,334">Venezia</arrivo>            
            </percorso>
            <percorso id="3">
                <partenza coords="143.2,382.8">Algeciras</partenza>
                <arrivo h="06:47" h_m="17:09" h_t="12:45" coords="143,154">Genova</arrivo>            
                <arrivo h="08:47" h_m="17:09" h_t="12:45" coords="143,154">Genova</arrivo>            
                <arrivo h="12:47" h_m="17:09" h_t="12:45" coords="143,154">Genova</arrivo>            
            </percorso>
            <percorso id="4">
                <partenza coords="664.9,122.0">Ancona</partenza>
                <arrivo h="06:47" h_m="17:09" h_t="12:45" coords="143,154">Zadar</arrivo>
                <arrivo h="06:48" h_m="21:01" h_t="12:46" coords="1123,434">Split</arrivo>
                <arrivo h="07:48" h_m="25:01" h_t="13:46" coords="1123,434">Bar</arrivo>
                <arrivo h="06:49" h_m="18:16" h_t="12:47" coords="333,334">Durres</arrivo>
                <arrivo h="07:48" h_m="25:01" h_t="13:46" coords="1123,434">Igoumenitsa</arrivo>
                <arrivo h="06:49" h_m="18:16" h_t="12:47" coords="333,334">Patra</arrivo>
                <arrivo h="06:48" h_m="21:01" h_t="12:46" coords="1123,434">Cesme</arrivo>
            </percorso>
    </porti>
    Questo risultato (errato!!!) che ottengo:
    destinazione:Roma,Genova,Napoli
    destinazione:Lecce,Cagliari,Cagliari
    destinazione:Genova,Genova,Genova
    destinazione:Zadar,Split,Bar
    Questo è il risultato corretto che vorrei avere:
    destinazione:Roma,Genova,Napoli
    destinazione:Lecce,Cagliari,Cagliari,Venezia
    destinazione:Genova,Genova,Genova
    destinazione:Zadar,Split,Bar,Durres,Igoumenitsa,Pa tra,Cesme
    e se nell'xml metto una sola destinazione, esempio:
    Codice PHP:
    ...
    <
    percorso id="3">
                <
    partenza coords="143.2,382.8">Algeciras</partenza>
                <
    arrivo h="06:47" h_m="17:09" h_t="12:45" coords="143,154">Genova</arrivo>        
            </
    percorso>
    ... 
    mi da errore:
    TypeError: Error #1010: Un termine risulta undefined e non ha proprietà.
    at lib.utility::XMLLoader/parse()
    at lib.utility::XMLLoader/complete()
    at flash.events::EventDispatcher/dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at flash.net::URLLoader/onComplete()
    mentre vorrei che mi restituisse:
    destinazione:Genova
    Si riesce a risolvere???

    Rey
    La vita è un panaro, non sai mai quello che ti esce!
    photorealistic 3D rendering and animations and WEB Design

  2. #2
    Ho intercettato l'errore!! era in un altro file che viene dal precedente importato... ma non so come modificarlo... mi aiutate?



    Codice PHP:
    package lib.utility
    {
        
    import flash.events.ErrorEvent;
        
    import flash.events.Event;
        
    import flash.events.EventDispatcher;
        
    import flash.events.IOErrorEvent;
        
    import flash.geom.Point;
        
    import flash.net.URLLoader;
        
    import flash.net.URLRequest;
        public class 
    XMLLoader extends EventDispatcher {
            private var 
    L:URLLoader;
            private var 
    A:Array;
            public function 
    XMLLoader (xml_url:String null):void {
                if (
    xml_urlinit(xml_url);
            }
            public function 
    load (s:String):void {
                
    init(s);
            }
            private function 
    init (s:String):void {
                
    = [];
                
    = new URLLoader(new URLRequest(s));
                
    L.addEventListener(Event.COMPLETEcomplete);
                
    L.addEventListener(IOErrorEvent.IO_ERRORio_error);
            }
            private function 
    complete (evt:Event null):void {
                var 
    xml:XML = new XML(evt.target.data);
                
    parse(xml);
                
    dispatchEvent(evt);
            }
            private function 
    io_error (evt:IOErrorEvent null):void {
                
    dispatchEvent(evt);
            }
            private function 
    parse (xml:XML):void {
                for (var 
    i:uint=0i<xml.percorso.length(); i++) {
                    
    A.push({
                           
    id:xml..@id[i],
                           
    partenza:xml..partenza[i],
                           
    partenza_coords:new Point(xml..partenza[i].@coords.split(",")[0], xml..partenza[i].@coords.split(",")[1]),
                           
    partenza_Xcoords:xml..partenza[i].@coords.split(",")[0],
                           
    partenza_Ycoords:xml..partenza[i].@coords.split(",")[1],
                           
    arrivi: [xml.percorso[i].arrivo[0], xml.percorso[i].arrivo[1], xml.percorso[i].arrivo[2]],
                           
    arrivi_coords:[
                                          new 
    Point(xml.percorso[i].arrivo[0].@coords.split(",")[0], xml.percorso[i].arrivo[0].@coords.split(",")[1]),
                                          new 
    Point(xml.percorso[i].arrivo[1].@coords.split(",")[0], xml.percorso[i].arrivo[1].@coords.split(",")[1]),
                                          new 
    Point(xml.percorso[i].arrivo[2].@coords.split(",")[0], xml.percorso[i].arrivo[2].@coords.split(",")[1])                          
                                          ],
                           
    arrivi_Xcoords:[
                                          
    xml.percorso[i].arrivo[0].@coords.split(",")[0],
                                          
    xml.percorso[i].arrivo[1].@coords.split(",")[0],
                                          
    xml.percorso[i].arrivo[2].@coords.split(",")[0]                          
                                          ],
                           
    arrivi_Ycoords:[
                                          
    xml.percorso[i].arrivo[0].@coords.split(",")[1],
                                          
    xml.percorso[i].arrivo[1].@coords.split(",")[1],
                                          
    xml.percorso[i].arrivo[2].@coords.split(",")[1]                          
                                          ],
                           
    arrivi_h:[
                                     
    xml.percorso[i].arrivo[0].@h,
                                     
    xml.percorso[i].arrivo[1].@h,
                                     
    xml.percorso[i].arrivo[2].@h
                                     
    ],
                           
    arrivi_h_m:[
                                       
    xml.percorso[i].arrivo[0].@h_m,
                                       
    xml.percorso[i].arrivo[1].@h_m,
                                       
    xml.percorso[i].arrivo[2].@h_m
                                       
    ],
                           
    arrivi_h_t:[
                                       
    xml.percorso[i].arrivo[0].@h_t,
                                       
    xml.percorso[i].arrivo[1].@h_t,
                                       
    xml.percorso[i].arrivo[2].@h_t
                                       
    ]
                           });
                }
            }
            public function 
    get data ():Array {
                return 
    A;
            }
        }

    Rey
    La vita è un panaro, non sai mai quello che ti esce!
    photorealistic 3D rendering and animations and WEB Design

  3. #3
    ho provato nell'algoritmo di cui sopra a cambiarlo in questo modo:

    Codice PHP:
    ...
    arrivi: [
        for (
    ind:uint=0ind<xml.percorso[i].arrivo.length(); ind++) {
             
    xml.percorso[i].arrivo[ind],
         }
    ];
    ...                                ], 
    ma non funziona...

    aiuto... gasp...
    Rey
    La vita è un panaro, non sai mai quello che ti esce!
    photorealistic 3D rendering and animations and WEB Design

  4. #4
    ci sono ho risolto... creo prima un array esterno in un ciclo for e poi lo metto nel posto corretto:

    Codice PHP:
    for...
    ...
    var 
    arrivi_array:Array = new Array();
                    for (var 
    ind:uint=0ind<xml.percorso[i].arrivo.length(); ind++) {
                            
    arrivi_array.push(xml.percorso[i].arrivo[ind]);
                        }    
    A.push({
    ...
    arriviarrivi_array,
    ...
    }) 
    grazie lo stesso!! alla prox
    Rey
    La vita è un panaro, non sai mai quello che ti esce!
    photorealistic 3D rendering and animations and WEB Design

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.