Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2000
    Messaggi
    1,309

    [AS3] Creare lettura di 3 xml con un solo codice

    Salve a tutti, il titolo non è molto esplicativo, vi spiego quello che voglio fare, ho sullo stage 3 moviclip con i seguenti nomi:
    mc_clip_01
    mc_clip_02
    mc_clip_03

    Ora vorrei fare che al caricamento dell'swf, questi 3 MC si popolassero con delle foto prese da 3 diversi xml, il tutto però lo vorrei fare senza scrivere il codice 3 volte, in pratica, io vorrei che il primo mac (mc_clip_01) chiamasse la funzione loadXML che in base ad un parametro gli dici di caricare il primo file xml es.:
    Codice PHP:
    private function loadXML(strMcLoad:String):void {            
        var 
    loader:URLLoader=new URLLoader();
        
    loader.addEventListener(Event.COMPLETE,completeHandler);
        var 
    strFile:String;
        
        switch (
    strMcLoad) { 
            case 
    'mc_clip_01' 
                
    strFile='linsting_image_01.xml';
                break; 
            case 
    'mc_clip_02' 
                
    strFile='linsting_image_02.xml'
                break; 
            case 
    'mc_clip_02' 
                
    strFile='linsting_image_03.xml'
                break; 
            default : 
                
    trace("some other month"); 
        }
        
        
        var 
    request:URLRequest=new URLRequest(strFile);
        try {
            
    loader.load(request);
        } 
        catch(
    error:Error) {
            
    trace('Unable to load requested document.');
        }

    Poi al completamento del caricamento del file xml vorrei richiamare la funzione completeHandler e fare il parse del xml e mettere tutto in un array, al termine di tale operazione, o cmq in modo indipendente, vorrei che fosse richiamata la funzione loadXML passandogli però il secondo file xml da caricare e che tutti i dati fossero messi in un altro Array.

    Il problema è che quando aggiungo loader.addEventListener(Event.COMPLETE,completeHan dler);
    gli dico in teoria di richiamare la funzione, ma non so per quale motivo è come se si accavallassero le cose.

    Mi sapete aiutare???
    Ciao By Peter_Pan...

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    non creare il loader dentro alla funzione, crealo fuori e attaccagli fuori il listener COMPLETE
    dentro alla funzione richiami solo il load ed eventualmente una funzione che valorizzi una variabile di indicazione del clip su cui vanno fatte le operazioni
    in alternativa crei una classe che estende MovieClip ed effettui al suo interno tutte le operazioni necessarie, poi agganci la classe ai clip che hai presumibilmente in libreria, o se non hanno grafica, e sono vuoti, metti direttamente la classe nella stessa cartella del fla e crei questi tre clip al volo, tipo

    var mc_clip_01:ExtendedMovieClip = new ExtendedMovieClip();

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2000
    Messaggi
    1,309
    Ciao and80, ho più o meno capito quello che dici, diciamo che sullo stage ho 3 MC con i seguenti nomi:
    mc_clip_01
    mc_clip_02
    mc_clip_03
    Nel primo frame del fla faccio queste 3 chiamate:
    leggiXML("linsting_image_01.xml");
    leggiXML("linsting_image_02.xml");
    leggiXML("linsting_image_03.xml");

    Poi ho creato una classe che si chiama leggiXML che accetta come paramentro il nome del file xml da caricare:
    Codice PHP:
    public function leggiXML(strFile:String):void {
        
    strNomeArrNode=strNomeArr;
        var 
    request:URLRequest=new URLRequest(strFile);
        var 
    loader:URLLoader=new URLLoader();
        
    loader.addEventListener(Event.COMPLETEcompleteHandler);

        try {
            
    loader.load(request);
        } 
        catch(
    error:Error) {
            
    trace('Unable to load requested document.');
        }

    ora al completamento del caricamento chiamo una funzione completeHandler, che mi fa il parse del file xml e mi dovrebbe mettere dei dati in 3 diversi array per poi riutilizzarli, ma come faccio a dire a questa funzione che deve cambiare l'array in base al file che ha letto??
    Codice PHP:
    public function completeHandler(event:Event):void {
        var 
    loader:URLLoader=URLLoader(event.target);                        
        var 
    result:XML=new XML(loader.data);
        var 
    myXML:XMLDocument=new XMLDocument();
        
        
    myXML.ignoreWhite=true;
        
    myXML.parseXML(result.toXMLString());
                
        var 
    node:XMLNode;
        var 
    totalNodes:int;
        
        
    node=myXML
        
    totalNodes=node.firstChild.childNodes.length;

        for(var 
    i:int=0;totalNodes;i++) { 
            
    //arrFile_01.push(node.firstChild.childNodes[i].attributes['urlImage']);
            
    trace('-----------------------------------------');
            
    //trace("ARRAY 01: "+arrFile_01[i]);
            
    trace("Concenuto Nodo: "node.firstChild.childNodes[i].attributes['urlImage']);
            
    trace('-----------------------------------------');
        }            

    Volevo passare alla funzione completeHandler magari il nome dell'array da riempire, ma ho letto che addEventListener permette di chiamare una funzione passandogli come paramentro solo Event.
    Altra cosa come faccio ad agganciare la classe al movie clip?
    Ciao By Peter_Pan...

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da Peter_Pan
    Altra cosa come faccio ad agganciare la classe al movie clip?
    credo di aver confuso con la creazione della referenza da libreria, in cui si possono inserire dei nomi ma solo per richiamare gli elementi in runtime, non per agganciargli delle classi specifiche

    riguardo al tuo problema, non ho ben chiara la struttura dell'intero lavoro, la classe che gestisce questi caricamenti, è una classe che viene istanziata di proposito o è la "document class" del fla?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2000
    Messaggi
    1,309
    In pratica io vorrei creare un codice riutilizzabile, dato che il fla deve fare le seguenti cose, caricare un xml e in base ai nomi di immagine contenute nell'xml, deve visualizzarmi tali immagini in una clipMovie, il fatto è che io posso avere più di una clipMovie che faccia le stesse operazioni, quindi vorrei creare una classe, che mi legge l'xml, lo parserizza, mi attiva un timer che mi chiama ogni n secondi uno dei file contenuti nell'xml, e me lo visualizzi in una clipMovie.
    Questa operazione la deve fare 1, 2 o n volte, a seconda di quante clipMovie io metto sullo stage.
    Ciao By Peter_Pan...

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