FLV e Actionscript AS 3, la classe VideoEvent

Nel vecchio post Come individuare che uno streaming video FLV è stato completato avevamo affrontato il problema degli eventi di stop dei filmati Flash 8, legato all’embedding dei metadata necessari da parte dell’ FLV Encoder.
Data la diffusione del formato FLV e dello streaming video tramite Flash è naturale che Adobe abbia pensato di risolvere il problema creando il codice Actionscritp AS 3 adatto a gestire gli eventi legati alla riproduzione di questo formato: la classe VideoEvent.
Con il codice di esempio a seguire vedremo come aggiungere comodi Event Listener per gestire la riproduzione.

Piazziamo sullo stage un componente FLVPlayback e diamogli come nome d’istanza “myVideo” quindi inseriamo il percorso del file nella proprietà source e in quella autoPlay il valore true per avviare automaticamente la riproduzione.
Ecco il codice da inserire nel frame:

//la classe che gestisce gli eventi
import fl.video.VideoEvent;

//una variabile che ci informa sullo stato della riproduzione
var playbackBegun:Boolean = false;

//la funzione che gestisce gli eventi intercettati dal listener
function videoHandler(evt:VideoEvent) {
//in base allo stato viene eseguito un codice diverso
switch(evt.state) {
case "playing":
playbackBegun = true;
trace("play");
break;
case "stopped":
//verifichiamo che sia attiva la riproduzione
if(playbackBegun == true) {
//risettiamo la variabile a false
playbackBegun = false;
trace("stop");
}
break;
default:
//nel caso non venga intercettato uno dei 2 eventi gestiti
trace("default");
}
}

//aggiungiamo il listener che starà "in ascolto" per gli eventi
myVideo.addEventListener(VideoEvent.STATE_CHANGE, videoHandler);

Il codice è abbastanza semplice e commentato dove serve, l’importante è capire che tutto viene gestito all’interno della funzione richiamata dall’ event listener e gestito a seconda dello stato passato.
Ho inserito dei trace che ci dicono lo stato attuale della riproduzione: qui possiamo gestire gli eventi dell’ FLV playback mandando in loop il filmato, richiamandone uno nuovo, facendo sparire lo schermo etc.

Come ultima cosa, la soluzione ad un problema comune a molti: lo smoothing del movie in riproduzione tramite FLVPlayback.
Purtroppo tra le proprietà del componente non c’è la voce per mettere a true questo effetto ma possiamo farlo con questa unica riga di codice:

myVideo.getVideoPlayer(myVideo.activeVideoPlayerIndex).smoothing = true;

dove myVideo è l’istanza sullo stage del componente FLVPlayback.

Ritieni questo post utile o interessante?
Condividi e Segnala

, , , , ,

Contenuto simile:

  • FLV e Actionscript AS 3, la classe VideoEvent
    Come individuare che uno streaming video FLV è stato completato

    Per chi usa il component FLVPlayback è semplice, tra i suoi parametri troviamo l'evento COMPLETE che possiamo gestire facilmente ma per quelli come me, a cui il component Macromedia (ormai Adobe) va molto stretto e che quindi se ne sono creati uno in proprio, potrà tornare utile questa spiegazione su come individuare...

Feed dei commenti dei commenti - lascia un commento - trackback

Rispondi al post