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

    Successione di filmati esterni

    Sto "scarvusciando" (traduco, scovando!) in questo forum un metodo utile al mio scopo. Sono un pò neofita di Flash e ActionScript, ma me la sto cavando grazie a questo bel posticino!

    Arrivo al dunque. avrei intenzione di creare un filmato Flash, il quale richiami in sequenza un certo numero di filmati esterni. In pratica: questo "loader" carica il primo, al termine carica il secondo, al termine carica il terzo e così via... fino a ricominciare dal primo. In "eterno" loop!

    Perchè tutto ciò? Semplice!

    L'intenzione mia è quella di crearmi una lista esterna con i nomi dei file .swf da caricare, il "loader" legge questo file e ne crea un array con il quale eseguire i filmati uno alla volta.



    Come "dovrei" muovermi???
    the Key of Lost Deep E-Dreams
    L'incomprensibile mondo nascosto.
    La Sottile linea tra Immaginazione e Realtà

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    3,023
    Metodo Semplice:
    Dal filmato principale carica il primo filmato sul livello 1...
    nel primo filmato (che è sul livello1), al termine della timeline, fai caricare il secondo filmato sempre sul livello 1...e così via....fino all'ultimo che ricarica il primo filmato sul livello1

    Metodo Complesso:
    Dal filmato principale imposti quanti sono i filmati e dai tutte le istruzioni affinchè al termine di ognuno si carichi quello dopo

    ti consiglio il primo...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    190

    aiuto caricamento

    anche io neofita e ancora un po imbrranato con flash e AS VVoVe: , saresti cosi gentile da inserire uno piccolo esempio x entrambe le soluzioni

    scusa per il disturbo
    e grazie in ogni caso
    M.
    Sei quello che fai , e non quello che dici..!
    Pace.

  4. #4
    beh... scusate per il ritardo alla mia risposta, ma sono particolarmente impegnato ultimamente...
    cmq, ecco il codice. Questo programmino in AS legge un determinato file XML, il quale contiene 3 nodi principali:

    1. lista di filmati;
    2. indirizzo relativo per poter uscire dal Loop (questa applicazione prevede la riproduzione FullScreen)
    3. file sul quale salvare il numero di filmato e il fotogramma dal quale far ripartire il Loop

    In pratica:
    1. il Loader carica il file XML prelevando la lista di file e ne esegue sia un conteggio che ne realizza un array da poter usare nella funzione avviaFilmato().
    2. Preleva il nome di file dal quale catturare le informazioni del numero del filmato ed il fotogramma dal quale far ripartire quel filmato (indicato all'interno del file XML).
    3. Terminata la lettura, viene tutto dato in pasto alla funzione avviaFilmato() il quale inizia a caricare il filmato indicato dal file esterno, ed al termine esegue il successivo. Arrivato all'ultimo filmato ricomincia dal primo e così via.
    4. La funzione avviaFilmato() viene lanciata non appena termina la lettura del file esterno con il numero di clip ed il fotogramma di start; a seguito, poichè la funzione è ricorsiva (richiama, cioè sè stessa), esegue un controllo del numero di clip eseguito e del successivo. Se tale numero è maggiore del numero massimo di clip (meno uno, poichè l'array inizia dall'elemento ZERO), riparte il ciclo dal filmato uno (ovvero l'elemento ZERO dell'array).

    Di seguito, riporto il codice (un pò di commenti ci stanno, cmq!)...

    codice:
    /*
    	Versatile IDLE LOOP versione 2.31 (06.06.2006) ::: by kL0d3
    	
    	ringrazio tutti quelli del forum actrionscript.it per l'aiuto
    	datomi nella realizzazione di questo piccolo script.
    	
    	Avvia in ciclo continuo (simile a Screen Saver), una serie di filmati
    	indicati da una lista presente in formato XML.
    	
    	Controlla in automatico l'arresto e l'avvio di nuovi filmati,
    	e, all'interruzione di esso cliccando sul filmato stesso,
    	verranno portati esternamente i valori indicativi dell' ultimo
    	clip avviato e dell'ultimo frame visualizzato relativo al clip.
    
    */
    //_root.path = "D:/sheldon/pir/spot/";      // Per uso su unità locale
    _root.path = "http://" + _root.base + "/spot/";  // Il percorso base viene preso dall'esterno con il metodo GET
                                                     // per uso su di un Server
    trace("Percorso Base = " + _root.path);
    //_root.lista_filmati = "pir.xml";          // Per uso su unità locale
    _root.lista_filmati = _root.playlist;       // File XML prelevato con metodo GET
                                                // Per uso su di un Server
    _root.filmato_partenza = 0;                 // Valore di START del numero CLIP
    _root.fotogramma_partenza = 1;              // Valore di START per numero FOTOGRAMMA
    _root.primo_avvio = true;                   // Controlla se è la prima volta che viene avviato il LOOP
    
    //_root.frame = "";         // NON RICORDO ... o_0'
    
    _root.sound_frame = 0;
    _root.maxvol = 100;
    s = new Sound;
    
    loading = new LoadVars();
    
    loading.onLoad = function (success)
    {
    	trace("Tentativo di caricamento del file CLIP.TXT");
    	
    	if (success)
    	{
    	_root.filmato_partenza = (this.clip != undefined) ? this.clip : 1;
    		
    	// Se c'è la variabile esterna "fotogramma" con metodo _GET, verrà avviato
    	// il clip indicato da "filmato_partenza" da questo frame, altrimenti parte
    	// dal primo fotogramma
    	_root.frame_partenza = (this.fotogramma != undefined) ? this.fotogramma : 1;
    		
    	trace("Avvio dal frame n° "_root.frame_partenza + " del filmato n° " + _root.filmato_partenza);
    		
    	} else {
    		     _root.fotogramma = 1;
    			 _root.clip = 0;
    			 trace("non ho caricato nulla dall'esterno!");
    		   }
    
    	avviaFilmato();
        
    }
    
    // DICHIARAZIONE VARIABILI :::::::::::::::::::::::::::::::::::::
    // =============================================================
    var another_frame:Boolean = false; //se dall'esterno va richiamato un altro frame
    var another_movie:Boolean = false; //se è finito il filmato corrente, ne carica un'altro
    
    // Verifica info su Clip e Frame::::::::::::::::::::::::::::::::::::::::
    
    //=======================================================================
    
    // Preparazione ISTANZA sulla quale caricare gli SPOT:::::::::::::::::::
    var loader:MovieClip = loader_mc;
    
    // Inizializzazione variabile per numero massimo di spot della lista
    _global.maxSpots = 0;
    
    // Preparazione variabile per nuovo oggetto XML
    lista_movie = new XML();
    lista_movie.ignoreWhite = true; // elimina eventuali spazi vuoti ???
    
    // Inizializzazione variabile per numero massimo di frame del filmato
    // corrente
    _global.frame_totali = undefined;
    
    // Inizializzazione variabile per numero frame corrente
    _global.frame_corrente = undefined;
    
    // Inizializzazione stringa nome file SWF da caricare
    _global.filmato = "";
    
    // FINE DICHIARAZIONE VARIABILI :::::::::::::::::::::::::::::::::::::::
    // ====================================================================
    
    
    
    
    
    // Funzione da avviare quando l'oggetto "lista_movie" viene caricata
    lista_movie.onLoad = function()
    {
    	//Controlla il numero di nodi presenti nel file XML
    	trace("Sto caricando lista_movie");
    	_global.maxSpots = this.childNodes[0].childNodes.length;
    	// Richiamo funzione "crealista()" per generare l'array con i nomi
    	// dei file SWF
    
    	_root.external_link = this.childNodes[1].childNodes[0].attributes.src;
    	
    	trace("Punto di ritorno = " + _root.external_link);
    	
    	_root.coords = this.childNodes[2].childNodes[0].attributes.src;
    	
    	trace("Punto di avvio frame = " + _root.coords);
    	
    	crealista();
    	
    }// fine funzione
    
    
    
    // Caricamento oggetto XML "lista_movie" con relativo file XML
    lista_movie.load(_root.path + _root.lista_filmati);
    
    loading.load(_root.coords + "?a=" + random(9999));
    
    // Inizializzazione nuovo array sul quale verranno richiamati i filmati
    // SWF
    _global.clip = new Array();
    
    
    
    
    
    
    
    
    
    // Funzione "crealista()" per generare il contenuto per l'array
    // "_global.clip[]"
    function crealista()
    {
    	// Ciclo FOR da 1 a _global.maxSpots(il numero massimo di spot
        // presenti nell'oggetto XML "lista_movie"
    	//l'indice del ciclo FOR verrà utilizzato per indicare il numero
    	// della riga dell'array sul quale operare
    	trace("Sto creando l'array _global.clip[]");
    	for (i=1; i<=_global.maxSpots; i++)
    	{
    		//clip[indice-1] = file XML . nodo [0] ovvero <spots> .
    		// . nodo [i - 1] ovvero <filmato ... /> . attributo src
    		_global.clip[i-1] = lista_movie.childNodes[0].childNodes[i-1].attributes.src;
    		
    		//comando di controllo: verifica se si stanno effettivamente leggendo
    		//i dati dal file XML indicato dall'oggetto "lista_movie"
    		trace(_global.clip[i-1]);
    	}// fine ciclo FOR
    	//_root.loading.load(_root.path + _root.frame + "?a=" + random(9999));
    	// Richiamo della funzione "avviaFilmato()" per avviare la prima volta
    	// il VERO "IDLE LOOP"
    
    } // fine funzione "crealista()"
    
    
    
    
    
    
    // Funzione "avviaFilmato()" ::: IL VERO IDLE LOOP
    function avviaFilmato()
    {
    	// Carica nella variabile _global.filmato la stringa indicata
    	// nell'array "_global.clip[]" presente alla riga n° "filmato_partenza"
    	// NB: viene messo il prefisso "_root." per indicare che la variabile
    	// si trova al di fuori della funzione "avviaFilmato()"
    	trace("Sto cominciando ad avviare avviaFilmato() con filmato n° " + _root.filmato_partenza +
    	" e con frame totali " + _root.frame_totali);
    	_global.filmato = _root.path + _global.clip[_root.filmato_partenza];
    	
    	// Comando di controllo assegnazione stringa alla variabile
    	// "_global.filmato"
    	trace("Filmato in avvio su loader_mc = " + _global.filmato);
    	
    	// Assegnazione alla variabile "loader" di tipo MovieClip il percorso
    	// dell' ISTANZA loader presente fuori da questa funzione
    	var loader:MovieClip = _root.loader;
    	
    	// Caricamento filmato indicato dalla variabile "_global.filmato"
    	// nell'oggetto MovieClip "loader"
    	loader.loadMovie("" + _global.filmato + "");
    	
    	// All'avvio del filmato presente nel livello0 ("loader")
    	// esegue la funzione
    	_level0.onEnterFrame = function()
    	{
    		// Comando di controllo: stampa in output il n° frame corrente
    		// di esecuzione (generato dalla funzione presente nella
    		// istanza "loader_mc"
    		trace("Main frame corrente = "+ _root.frame_corrente);
    		
    		// Comando di controllo: stampa rapporto tra frame corrente e
    		// frame totali del filmato
    		trace("Dimmi un pò che ti stai vedendo = " + _root.frame_corrente + "/" + _root.frame_totali);
    		
    		// ITERAZIONE IF: poichè l'evento "onEnterFrame" viene eseguito
    		// ciclicamente ad ogni frame visualizzato, controlla se il
    		// filmato è giunto al termine
    		// Controlla che il frame corrente ed il numero di frame totali
    		// sia uguale E (AND &&) che il numero di frame totali sia
    		// maggiore di 1. Questo per evitare che, qualora non venga
    		// caricato alcun filmato nell'istanza "loader_mc",
    		// l'evento "onEnterFrame" venga avviato per l'istanza vuota,
    		// comprensiva di 1 SOLO FRAME
    		if((_root.frame_corrente == _root.frame_totali) &&
    	  (_root.frame_totali > 1))
    	  {
    		  // Interrompe l'esecuzione di questa istanza
    		  this.stop();
    		  
    		  // Stampa in output il messaggio "Main fermato"
    		  trace("Filmato su \"Main\" interrotto");
    
    		  // Interrompe il controllo dell'evento "onEnterFrame"
    		  delete this.onEnterFrame;
    		  
    		  // ITERAZIONE IF per verifica del successivo filmato da
    		  // eseguire: l'indice dell'array "_global.clip[]" inizia
    		  // dal valore 0. il numero massimo di filmati inidicato
    		  // dalla variabile "_global.maxSpots (con prefisso "_root.")
    		  // parte dal valore 1. Percui, il controllo va eseguito
    		  // tra l'indice del filmato attualmente completato e 
    		  // il numero massimo di filmati "_global.maxSpots" MENO 1.
    		 
    		 if((_root.filmato_partenza == (_root._global.maxSpots - 1)) &&
    			(_root.frame_totali != undefined))
    		 {
    			 // Comando di controllo: stampa in output il numero di indice
    			 // filmato appena eseguito
    			 trace("Filmato eseguito n° " + _root.filmato_partenza);
    			 // Poichè è l'ultimo filmato della lista, riporta l'indice
    			 // "filmato_partenza" a ZERO.
    			 _root.filmato_partenza = 0;
    		 } //fine gruppo comandi per iterazione VERA
    		 else
    		 {
    			 // Se non abbiamo eseguito l'ultimo filmato,
    			 // incrementa di 1 l'indice dell'array "_global.clip[]"
    			 // affinchè venga eseguito il filmato successivo
    			 _root.filmato_partenza++; 
    			 // Comando di controllo: stampa in output il filmato da
    			 // eseguire successivamente (e ne indica il numero complessivo)
    			 trace("Nuovo filmato: Filmato n° " + (_root.filmato_partenza + 1) + " su " + _root._global.maxSpots);
    		  } //fine gruppo comandi iterazione FALSA
    		
    		// Riesegue la funzione "avviaFilmato()" per continuare
    		// l' IDLE LOOP
    		avviaFilmato();
    	  } // fine iterazione IF per frame attuale == frame totali 
    
      }//fine funzione su evento "onEnterFrame" del _level0
    
    }//fine funzione "avviaFilmato()"


    Il file XML è il seguito:


    codice:
    <?xml version="1.0" encoding="iso-8859-1"?>
    
    <spots>
      <filmato src="clip1.swf"/>
      <filmato src="max1.swf"/>
      <filmato src="belfare.swf"/>
      <filmato src="hello_world.swf" />
      <filmato srC="candy_shop.swf" />
    </spots>
    
    <link>
      <esterno src="../index.php" />
    </link>
    
    <frame>
      <file src="clip.txt" />
    </frame>

    Inoltre, il file CLIP.TXT è il seguente:

    codice:
    &clip=1&
    &fotogramma=120&


    Infine, un bottone grande quanto il LOOP, contiene il seguente codice:

    codice:
    on(release)
    {
    	var variabile = new LoadVars(); 
        variabile.fotogramma=_root.frame_corrente;
    	variabile.clip = _root.filmato_partenza;
    	variabile.coords = _root.coords;
    	//variabile.comando = "" + _root.path + "varframe.php?t=" + (new Date().getTime()) + "&" + variabile;
    		
    	controllo = variabile.sendAndLoad(_root.path + "varframe.php?t="+(new Date().getTime()),variabile,'POST');	
    	
        if(controllo)
    	{
    		getURL(_root.external_link ,"_self");
    	}
    }


    Mentre il file varframe.php contiene il codice seguente:

    codice:
    <? 
      $file_name="varframe.txt"; 
      $testo_file="&clip=".$_GET[clip] . "&\n" . "&fotogramma=" . $_GET[fotogramma] . "&";
      $handle=fopen($file_name,"w"); 
      fwrite($handle,$testo_file); 
      fclose($handle); 
    ?>



    Unico problema: in rete, il browser non riesce a prelevare il file CLIP.TXT aggiornato. Mantiene l'ultimo salvato nella cache. Qualcuno di voi ha un'idea per tutto ciò? L'unica soluzione che ho trovato è quella di sostituire il nome di file CLIP.TXT con undefined... mistero di fede!



    Se qualcuno può aiutarmi a migliorare il codice... sono pronto a consigli utili!




    kL0d3
    the Key of Lost Deep E-Dreams
    L'incomprensibile mondo nascosto.
    La Sottile linea tra Immaginazione e Realt&agrave;

  5. #5
    scusami ma nn potresti usare lo stesso metodo che cha usato x caricare il file xml??


    con una cosa del genere

    file="clip.txt";
    myLoadVars.load(file+"?rnd=" + random(999999));

    ciao
    la verità non è una meretrice che si getta al collo di chi non la vuole ma anzi essa è dotata di una così altera bellezza che anche chi sacrifica tutto per ottenerla non è sicuro di averla raggiunta !

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    190

    super grazie

    super grazie, provero ...!

    buona giornata
    M
    Sei quello che fai , e non quello che dici..!
    Pace.

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.