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

    video flash in successione

    buonasera a tutti.....

    chiedo aiuto per realizzare il seguente progetto....

    ho una pagina html composta da una semplice tabella. in una cella di questa tabella ho messo un <div> </div> cui contiene un filmato flash (.swf). Tramite javascript carico il filmato flash con questo codice

    Questo sta nell'head

    Codice PHP:
    script type="text/javascript" src="swfobject.js"></script> 
    Questo sta nel body

    Codice PHP:
    <div id="flashcontent">
    <
    object id="video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" style="width:100%; height:100%">
    </
    object>
    Richiede l'installazione di Flash Player 8
                </div>
                
               <script type="text/javascript">
                    var so = new SWFObject("video.swf", "video", "100%", "100%", "8", "#000000");
                    so.addParam("quality", "best");
                    so.addParam("wmode", "transparent");
                    so.addParam("salign", "t");
                    so.write("flashcontent");
                </script> 
    come si nota ho utilizzato swfobject.js per inserire il video nel div.
    la domanda è:
    come posso visualizzare piu di un video (una sorta di scaletta) in successione, cioè carico video1.swf poi finito questo automaticamente mi carica video2.swf e cosi via...arrivato per esempio video10.swf ricomincia il ciclo...
    io avevo pensato di creare un array con i nomi dei video... però poi non so come posso caricarli in successione.....mi dovrei ricavare la durata del singolo video tramite qualche evento ( e non so come si fa)....
    io ho scritto javascript...pero anche altri linguaggi sono ben accetti (vbscript o altri)

    spero che è una cosa che si puo realizzare .... grazieeee

  2. #2
    fortunatamente sono riuscito a trovare la soluzione.....ho fatto una ricerca migliore è ho trovato proprio quello che mi serviva....

    Codice PHP:
    fscommand("fullscreen"true);
    Stage.scaleMode "exactFit" 
    // BLOCCO LA ROOT; SUPERFLUO IN QUESTO CASO, UTILE SE QUESTO SWF 
    // E' ALL' INTERNO DI UNA LATRO E CARICATO
    this._lockroot true;

    // CREO IL CONTENITORE CHE E' UN MOVIECLIP CON NOME ISTANZA container DI DEFAULT
    // A POSIZIONE X = 0 / Y = 0 , VISIBLE E ALPHA 100 con ROTATION 0
    this.createEmptyMovieClip'container'this.getNextHighestDepth() );

    // CREO IL GESTORE DI EVENTI, UN OGGETTO CON METODI DEDICATI
    // COME LISTENER DEL MOVIECLIPLOADER ED ALTRI UTILI AL TUO SCOPO
    var swfloader:Object = new Object();

    // EVENTO LISTENER: onLoadInit
    //     Richiamato dal MovieClipLoader a MC caricato e disponibile
    //  [ esiste anche l' onLoadComplete, ma l' MC in quel caso non e' disponibile a keyframe 1 ]
    swfloader.onLoadInit = function( mc:MovieClip ):Void {
        
        
    // POSIZIONO L' SWF CARICATO AL PRIMO FRAME
        
    _root['container'].gotoAndStop);
        
    // LO RENDO VISIBILE
        
    _root['container']._visible true;
        
    // ASSEGNO IL PATH PER RISALIRE ALL' OGGETTO
        // swfloader QUANDO MI SERVIRA' ...
        
    _root['container'].__path this;

        
    //DIMENSIONE CLIP 100%
        
    _root['container']._xscale 186
        
    _root['container']._yscale 191

        
        
    //_root['container']._y = Math.floor( ( Stage.height / 2 ) - ( mc._height / 2 ) );
        // INIZIO L' ONENTERFRAME:
        // onEnterFrame e' un loop che ha latenza 1 fotogramma
        // questo significa che quando e' invocato non parte immediatamente
        // looppa priam sul primo keyframe del MovieClip sulla quale viene applicato
        // poi passa al successivo o fa quello che gli viene detto di fare
        // Nell' onEnterFrame il riferimento di default e' THIS, ovvero il MovieClip
        // alla quale viene applicato.
        
    _root['container'].onEnterFrame = function() {
            
    // se il frame di questo MC e' un frame minore del totale frames disponibili ...
            
    if( this._currentframe this._totalframes ) {
                
    // vado al frame successivo , ovvero questo frame + 1
                
    this.gotoAndStop( ++this._currentframe );
            }
            
    // altrimenti sono a fine frames, ergo timeline finita
            
    else {
                
    // in questo caso controllo che il contenitore con tutti gli MC
                // che e' una variabile interna all' oggetto swfloader che e' il path
                // di riferimento della variabile __path di questo MC assegnata precedentemente
                // ... se non esiste il prossimo filmato, basato sul fatto che l' array
                // swfloader.__container sara' giunto al termine
                
    if( this.__path.__containerthis.__path.__containerNum ] == undefined ) {
                    
    // allora reimposto la variabile swfloader.__containerNum a 0, cosi' 
                    // da ricaricare il primo degli SWF disponibili
                    
    this.__path.__containerNum 0;
                }
                
    // a questo punto sono sicuro che esistera' il valore contenuto nell' array
                // swfloader.__container[ this.__path.__containerNum ]
                // che per comodita' incremento di 1 per passare poi al controlo sul valore contenuto
                // nel prossimo indice dell' array swfloader.__container
                
    this.__path.loadMoviethis.__path.__containerthis.__path.__containerNum++ ] );
                
                
    // qui elimino questo onEnterFrame perche' non mi serve piu' il LOOP su questo movieClip
                
    delete this.onEnterFrame;
            }
        }
    }

    // EVENTO LISTENER: onLoadProgress
    //     Richiamato dal MovieClipLoader durante il caricamento del MovieClip
    // ci rende noti i bytes caricati e quelli totali
    swfloader.onLoadProgress = function( mc:MovieClipbl:Numberbt:Number ):Void {
        
        
    // creo la solita perc , magari la usi ma in locale questo metodo non
        // funzionera' mai, o meglio, non te ne accorgi, solo online servira' a qualcosa
        
    var p:Number Math.floor( ( bl bt ) * 100 );
        if( 
    != NaN && != infinity && ) {
            
    tracemc ', ' );
        }
    }

    // EVENTO LISTENER: onLoadError
    //     Richiamato dal MovieClipLoader se e' impossibile caricare il file richiesto
    // Rende noto l' errore generato
    swfloader.onLoadError = function( mc:MovieCliperror:String ):Void {
        
    traceerror );
    }

    // EVENTO PERSONALE, ASSEGNATO PER COMODITA': loadMovie
    // Questo evento dell' oggetto swfloader altro on fa che eliminare
    // il precedente MovieClipLoader per ricrearlo su una variabile interna
    // quale e' __ML__ , allo stesso tempo esegue l' unloadMOvie sul MovieClip
    // container della _root, probabilmente superfluo visto che un loadMovie su
    // un movieClip che ha caricato qualcosa, scarica questo qualcosa in automatico
    // ... ma imho sempre meglio fare le cose in modo ordinato
    swfloader.loadMovie = function( swf:String ):Void {
        
    // metto l' MC invisibile, cosi' durante il caricamento, nell' onLoadProgress
        // sono sicuro che se l' SWF non ha STOP(); a inizio filmato tale filmato non mi parta per
        // i fatti suoi frame dopo frame , a seconda di cosa carica
        
    _root['container']._visible false;
        
        
    // se e' almeno la seconda volta che richiamo questo metodo __ML__ sara' definito
        
    if( this.__ML__ != undefined ) {
            
    // quindi scarico il MovieClip container e cancello la variabile __ML__ ....
            
    _root['container'].unloadMovie();
            
    delete this.__ML__;
        }
        
    // la quale viene riassegnata o creata come MovieClipLoader
        
    this.__ML__ = new MovieClipLoader();
        
    // per poi aggiungergli swfloader come listener, in modo da far gestire al MovieClipLoader
        // glie eventi dedicati descritti sopra
        
    this.__ML__.addListenerthis );
        
    // per poi dirgli cosa caricare e dove, in questo caso carica il testo contenuto
        // in swf sul movieClip _root['container']
        
    this.__ML__.loadClipswf_root['container'] );
    }

    // EVENTO PERSONALE, ASSEGNATO PER COMODITA': preload
    // Questo metodo er' l' inizializzatore di tutto sto' sistemino di caricamento files
    // altro non fara' che leggersi le informazioni sui nomi dei files che andranno a popolare
    // l' array creato per gestire il loop, inizializzare, oltre l' array, una variabile
    // numerica per controllare o sapere sempre a che punto dell' array sono e cosa devo 
    // caricare poi, tale variabile sara' swfloader.__containerNum , mentre l' array sara'
    // swfloader.__container
    swfloader.preload = function( txtFile:String ):Void {
        
        
    // creo l' oggetto LoadVars con scope interno, perche' una volta usato non mi servira' piu'
        
    var __lv__:LoadVars = new LoadVars();
        
    // dico a questo oggetto il path di riferimento per creare o gestire variabili appartenenti a swfloader
        // ovviamente essendo dentro un metodo di swfloader il path di riferimento sara' THIS, riferito a se stesso
        
    __lv__.__path this;
        
    // scrivo cosa fare all' onLoad
        
    __lv__.onLoad = function( s:Boolean ):Void {
            
    // se trovo il file ...
            
    if( == true ) {
                
    // creo la variabile swfloader.__container come nuovo Array
                
    this.__path.__container = new Array();
                
    // mi creo una variabile convenzionale per fare il loop delle informazioni nel file di testo
                
    var a:Number 0;
                
    // finche' esiste 'fileN' dove N sara' incrementato di 1 in 1 ad ogni loop di questo ciclo ...
                
    while( this['file'+String(a)] != undefined ) {
                    
    // aggiungi all' Array swfloader.__container il nome o il testo di questa variabile
                    // this['file'+String( a )] sara' esattamente this.file0 , this.file1, etc etc
                    // per comodita' incremento la a direttamente in assegnazione
                    
    this.__path.__container.pushthis['file'+Stringa++ )] );
                }
                
    // arrivati a this.fileN , inesistente , quindi undefined, quindi usciti dal ciclo precedente ...
                // creo la variabile numerica swfloader.__containerNum facendola partire da 0 ... poi
                // sara' questo applicativo stesso a gestirla, incrementarla o riresettarla
                
    this.__path.__containerNum = new Number);
                
                
    // bene, ho le informazioni sull' array, ho il primo elemento da caricare
                // ... quale momento migliore per far partire il tutto ???
                
    this.__path.loadMoviethis.__path.__containerthis.__path.__containerNum++ ] );
                
    // per comodita' incremento di uno la variabile swfloader.__containerNum
                // cosi' al prossimo controllo sull' array verifichero' che esista
                // swfloader.__container[1] e non zero che gia' so di averlo usato e che quindi e' presente nell' array
            
    }
            else {
                
    // impossibile caricare il file di testo
                
    this.__path.onLoadError_root'Impossibile caricare il file: ' txtFile );
            }
        }
        
        
    // effettuo il load del file specificato in txtFile
        
    __lv__.loadtxtFile );
    }

    // avvio l' ambaradan ...
    swfloader.preload'file.txt' ); 
    e funziona bene...
    adesso pero vi devo fare altre domande...
    1) perche funziona solo con actionscript 2 mentre con la versione 3 da tanti errori ????
    2) _yscale e _xscale come si utilizzano??? siccome ho lo stage del filmato contenitore a 1280x720 mentre il video che verrà riprodotto è a 800x600 come posso fare per scalare il video alla dimensione di 1280x 720 ??????

    grazie ancora

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.