FLV player en AS3

29.01.2009 18:30

 

Haciendo caso al consejo del sabio patrón, me adentro al AS3 con la herramienta que me ha ayudado en varias jornadas de trabajo. De antemano agradezco al maestro Sergio, que fue quien inicialmente cacharreo con la programación y logró resultados envidiables (un abrazo maestro!!!). Como todo cambia, el AS3 comparado con el AS2 sintetizo las funciones; el código apunto a que todo se fuera por un solo frame o por un archivo .as externo con toda la programación. En el AS2 se veia el código así:


videos = new XML();
videos.ignoreWhite = true;
videos.onLoad = function(success) {
    if (success) {
        video = videos.firstChild.childNodes[0];
        //trace(video);
        num_total = videos.firstChild.childNodes[0].childNodes.length;
        //trace(num_total);
        crearLista();
        ruta = video.childNodes[0].childNodes;
        trace(ruta);
        visor.contentPath = "videos/"+ruta;
        //visor.play();
    } else {
        trace("No se pudo cargar la lista");
    }
};
videos.load("M.xml");
lista.addEventListener("change", alCambiar);
function crearLista() {
    misDatos = new Array();
    lista.dataProvider = misDatos;
    for (var i = 0; i<num_total; i++) {
        misDatos.addItem({label:video.childNodes[i].attributes.textos, data:video.childNodes[i].childNodes});
    }
}
function alCambiar(evento) {
    if (evento.type == "change") {
        visor.contentPath = "videos/"+lista.selectedItem.data;
        visor.play();
    }
}

 

En el AS3 se ve así:


import fl.video.VideoEvent;
var aVideos:Array = new Array();

function playMovie(event:Event):void {
    myVideo.play();
}

function nextSong(event:Event):void {
    var path:String = aVideos[Math.floor(Math.random()*aVideos.length)+1];
   myVideo.load(path);
}

myVideo.addEventListener(VideoEvent.COMPLETE, nextSong);
myVideo.addEventListener(VideoEvent.READY, playMovie);



var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, onLoaded);

var xml:XML;

function onLoaded(e:Event):void
{
  
   xml = new XML(e.target.data);
   //trace(xml.trackList.track);
   //trace(xml.trackList.track.location.text()[0]);
   var authorList:XMLList  = xml.trackList.track.location;
  
  
   for (var i:int = 0; i < authorList.length(); i++)
   {
  
      var authorElement:XML = authorList[i];
      aVideos.push(authorElement);
      lb.addItem({data:authorElement,label:authorElement});
  
   }
   var path:String = aVideos[Math.floor(Math.random()*aVideos.length)];
   myVideo.load(path);  
}

loader.load(new URLRequest("playlist.xml"));


lb.addEventListener(Event.CHANGE, itemChange);

function itemChange(e:Event):void
{
   myVideo.load(lb.selectedItem.data);
}

el xml del AS3 es así:

<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v4.2 U (https://www.xmlspy.com) by felipe (parracorp) -->
<playlist>
    <trackList>
        <track>
            <title></title>
            <creator></creator>
            <location>videos/01.flv</location>
            <info></info>
        </track>
        <track>
            <title></title>
            <creator></creator>
            <location>videos/02.flv</location>
            <info></info>
        </track>
        <track>
            <title></title>
            <creator></creator>
            <location>videos/03.flv</location>
            <info></info>
        </track>
    </trackList>
</playlist>

 

Comprobado!! si funciona y carga más rápido que el de AS2 :)


Los archivos fuente estan aquí

flvplayerAS3.rar (1,9 MB)

 

Links de interés:

https://foros.cristalab.com/reproductor-de-video-dinamico-t58383/