Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [AS3] - Come posso restituire un valore da una funzione ??

    Come posso restituire un valore da una funzione ??
    vorrei che l'Array playlist sia disponibile al di fuori della funzione Load_XML

    il file XML:
    codice:
    <?xml version="1.0" encoding="UTF-8"?>
    <playlist>
    <info>
    	<vertion>V.0.001 Beta</vertion>
    	<date>27/04/2010</date>
    </info>
    <setting>
    	<set_1>test setting 1</set_1>
    	<set_2>test setting 2</set_2>
    </setting>
    <videos>
    	<video name="Test Video N 1" md5="md5_test_1" url="video/video_1.mp4"></video>
    	<video name="Test Video N 2" md5="md5_test_2" url="video/video_2.flv"></video>
    	<video name="Test Video N 3" md5="md5_test_3" url="video/video_3.flv"></video>
    	<video name="Test Video N 5" md5="md5_test_5" url="video/video_5.flv"></video>
    	<video name="Test Video N 6" md5="md5_test_6" url="video/video_6.flv"></video>
    	<video name="Test Video N 7" md5="md5_test_7" url="video/video_7.flv"></video>
    </videos>	
    </playlist>
    Il codice AS3
    Codice PHP:
    //-------------------------------------------------------------------------
    // XML
    //-------------------------------------------------------------------------
    var xmlLoader:URLLoader = new URLLoader();
    var 
    xmlRequest:URLRequest = new URLRequest("video/playlist.xml");

    function 
    Load_XML(e:Event) {
        var 
    xml:XML = new XML(e.target.data);
    // Test
        
    var playlist:Array = new Array();
        for 
    each (var item in xml.videos.video.@url) {
            
    //trace(item);
            
    playlist.push(item)
        }
        
    // al'interno della funzione tutto ok
        
    trace(playlist);
        return (
    playlist);
    }

    // ..
    xmlLoader.addEventListener(Event.COMPLETELoad_XML);
    xmlLoader.load(xmlRequest);
    // ..

    // al difuori della funzione da null
    trace(playlist); 

  2. #2
    Ho fatto dei test leggendo (L'area di validità delle variabili)
    http://livedocs.adobe.com/flash/9.0_...=00000043.html
    ma non va il problema risiede nella chiamata alla funzione
    la quale è nidificata....

    xmlLoader.addEventListener(Event.COMPLETE, Load_XML);


    Codice PHP:
    //-------------------------------------------------------------------------
    // XML
    //-------------------------------------------------------------------------
    /**/

    var xmlLoader:URLLoader = new URLLoader();
    var 
    xmlRequest:URLRequest = new URLRequest("video/playlist.xml");

    // definisco l'array all'esterno (valore globale)
    var playlist:Array = new Array()

    // ..
    function Load_XML(e:Event) {
        var 
    xml:XML = new XML(e.target.data);
        for 
    each (var item in xml.videos.video.@url) {
            
    playlist.push(item)
        }
        
    // IN DATA
        
    trace("playlist IN function = " playlist);
    }
    // ..
    xmlLoader.addEventListener(Event.COMPLETELoad_XML);
    xmlLoader.load(xmlRequest);
    // ..

    // OUT DATA
    trace("playlist OUT function = " playlist);

    // SAMPLE
    /**/
    var strGlobal:String "valore globale";
    trace(strGlobal);
    function 
    scopeTest()
    {
        
    strGlobal += "bla..bla";
        
    trace(strGlobal); // Variabile globale
    }
    scopeTest();
    trace(strGlobal); // Variabile globale 

  3. #3
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    La funzione che esegui e nella quale riempi l'array viene eseguita in maniera asincrona, cioè non puoi sapere esattamente quando questa verrà avviata. Di conseguenza anche se lo "scope" fosse corretto l'array sarebbe vuoto e non lo potresti usare se non dentro alla funzione stessa.

  4. #4
    Originariamente inviato da and80
    La funzione che esegui e nella quale riempi l'array viene eseguita in maniera asincrona, cioè non puoi sapere esattamente quando questa verrà avviata. Di conseguenza anche se lo "scope" fosse corretto l'array sarebbe vuoto e non lo potresti usare se non dentro alla funzione stessa.
    come posso verificare che il caricamento del XML sia completo e l'array popolato?
    in modo da poterlo gestire all'esterno della funzione in tranquillità...

    Grazie
    cichity74

  5. #5
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da cichity74
    come posso verificare che il caricamento del XML sia completo e l'array popolato?
    in modo da poterlo gestire all'esterno della funzione in tranquillità...

    Grazie
    cichity74
    Con la funzione stessa, l'esecuzione di quella funzione è la conseguenza del caricamento.
    Non mi è chiaro, c'è un motivo per cui devi utilizzare la funzione fuori?

    Se proprio vuoi, puoi scrivere una funzione esterna e richiamarla quando viene inviato l'evento.

  6. #6
    Originariamente inviato da and80
    Con la funzione stessa, l'esecuzione di quella funzione è la conseguenza del caricamento.
    Non mi è chiaro, c'è un motivo per cui devi utilizzare la funzione fuori?
    devo creare l'array dal file xml una volta popolato l'array mandare in esecuzione i video indicati

    Codice PHP:
    //-------------------------------------------------------------------------
    // XML
    //-------------------------------------------------------------------------
    /**/
    var xmlLoader:URLLoader = new URLLoader();
    var 
    xmlRequest:URLRequest = new URLRequest("video/playlist.xml");

    xmlLoader.addEventListener(Event.COMPLETELoad_XML);
    xmlLoader.load(xmlRequest);

    // definisco l'array all'esterno (valore globale)
    var playlist:Array = new Array()

    // ..
    function Load_XML(e:Event) {
        var 
    xml:XML = new XML(e.target.data);
        for 
    each (var item in xml.videos.video.@url) {
            
    playlist.push("\""+item+"\"");
        }
        
    // IN DATA
        
    trace("playlist IN function = " playlist);
    }

    // OUT DATA
    trace("playlist OUT function = " playlist);

    //-------------------------------------------------------------------------
    // VIDEO
    //-------------------------------------------------------------------------

    // *** Array provvisorio da sostituire con quello creato nel estrazione dati del file xml *** 
    /*
    var playlist:Array = new Array(
        "video/video_1.mp4",
        "video/video_2.flv",
        "video/video_3.flv", 
        "video/video_5.flv", 
        "video/video_6.flv",
        "video/video_7.flv"    
    );
    */

    // creiamo un oggetto NetConnection
    var netconn:NetConnection = new NetConnection();
    netconn.connect(null);

    // impostiamo l'oggeto netStream, associandolo alla NetConnection creata
    var stream_video = new NetStream(netconn);

    // associamo un client allo stream video
    stream_video.client this;

    // associamo li flusso netStream all'istanza dell'oggetto Video
    var player:Video= new Video();

    // aggiungiamo il player video sullo stage
    addChild(player);

    // associamo al player lo stream video
    player.attachNetStream(stream_video);

    // avviamo la riproduzione del file video desiderato
    stream_video.play(playlist[0]);

    // verifica di stato
    var 0
    function controllaStatus(evt:NetStatusEvent):void{
    // ..
        //trace(evt.info.code);
    // ..
        // fine del video in esecuzione
        
    if (evt.info.code == "NetStream.Play.Stop"){
            
    trace("Il Video N: "" Terminato");
            
    i++;
            if (
    > (playlist.length-1)){
                
    0;
                
    trace("Fine playlist ricomincia da: " i);
            }
            
    trace("Riproduco il video N: " i);
            
    stream_video.play(playlist[i]);
        }
    // ..
    // END function
    // ..
    stream_video.addEventListener(NetStatusEvent.NET_STATUScontrollaStatus);
    //------------------------------------------------------------------------- 

    Originariamente inviato da and80
    Se proprio vuoi, puoi scrivere una funzione esterna e richiamarla quando viene inviato l'evento.
    Potresti farmi un esempio... ?
    Grazie

  7. #7
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Ok ho capito, ti basta la famosa funzione
    Ora non riesco a scriverti nulla, se posso più tardi...

  8. #8
    up...

  9. #9
    Codice PHP:
    var xmlLoader:URLLoader = new URLLoader();
    var 
    xmlRequest:URLRequest = new URLRequest("playlist.xml");

    xmlLoader.addEventListener(Event.COMPLETELoad_XML);
    xmlLoader.load(xmlRequest);

    // definisco l'array all'esterno (valore globale)
    var playlist:Array = new Array()

    // ..
    function Load_XML(e:Event) {
        var 
    xml:XML = new XML(e.target.data);
        for 
    each (var item in xml.videos.video.@url) {
            
    playlist.push("\""+item+"\"");
        }
        
    // IN DATA
        
    trace("playlist IN function = " playlist);
        
    init();
    }

    function 
    init():void{
    // OUT DATA
        
    trace("playlist OUT function = " playlist); 

    There is nothing conceptually better than Rock 'n' Roll.

    poker is very much like sex. most people think they're the best but don't know what they're doing.

  10. #10
    grazie 1000

    cichity74

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.