Comunidad de diseño web y desarrollo en internet online

Problema con API YouTube y galeria en XML.

Citar            
MensajeEscrito el 08 Ago 2012 06:26 pm
Saludos:
Estoy usando el codigo de la API de YouTube de la pagina de Google:

Código HTML :

https://developers.google.com/youtube/flash_api_reference?hl=es-

El problema concreto es que estoy usando una galeria para seleccionar los videos desde un xml. Dicha galeria esta creada de esta manera:

Código ActionScript :

      for (i = 0; i < larXml; i++)
      {
         tb = new MovieClip();
         tb.alpha = 0;
         tb.x = 930;
         tb.y = 100 * dirY + 120;

         contenedor.addChild(tb);
         ldr = new Loader();
         dirX++;
         if (dirX == 1)
         {
            dirX = 0;
            dirY++;
         }
         Iluminacion();
         CargarThumbs(tb);

         addChild(contenedor);
      }


La funcion CargarThumbs es esta:

Código ActionScript :

function CargarThumbs(tb:MovieClip):void
   {
      tb.buttonMode = true;
      tb.addChild(ldr);
      tb.addEventListener(MouseEvent.ROLL_OVER, alPasar);
      tb.addEventListener(MouseEvent.ROLL_OUT, alQuitar);
      ldr.load(new URLRequest(xml.videos[i].Lista[1].attributes()));

      Click(i);

      ldr.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, Prog);
      function Prog(e:ProgressEvent):void
      {
         var por:Number = Math.round(e.bytesLoaded * 100 / e.bytesTotal);

      }
      ldr.contentLoaderInfo.addEventListener(Event.COMPLETE,Listo);

      function Listo(e:Event):void
      {
         Tweener.addTween(tb,{alpha:1,time:2,transition:"easeOutQuad"});

      }
      function alPasar(e:MouseEvent):void
      {
         Tweener.addTween(tb,{alpha:0.5,time:1,transition:"easeOutQuad"});

      }
      function alQuitar(e:MouseEvent):void
      {
         Tweener.addTween(tb,{alpha:1,time:1,transition:"easeOutQuad"});

      }
   }


Por ultimo, la funcion Click, la que selecciona los videos, es esta:

Código ActionScript :

   function Click(n:Number)
   {
      function alClick(e:MouseEvent)
      {
         video(xml.videos[n].Lista[2].attributes().toString());
      }
      tb.addEventListener(MouseEvent.CLICK, alClick);
   }


"video" es la funcion que carga los videos de YouTube, quien contiene el codigo de la API de YouTube:

Código ActionScript :

function video(videoURL:String)
{

   Security.allowDomain("http://www.youtube.com");
   Security.allowDomain('http://gdata.youtube.com');
   Security.allowInsecureDomain('http://gdata.youtube.com');
   Security.allowInsecureDomain('http://www.youtube.com');

   youtubeloader = new Loader();
   youtubeloader.unloadAndStop();

   youtubeloader.contentLoaderInfo.addEventListener(Event.INIT,onLoaderInit);
   youtubeloader.load(new URLRequest("http://www.youtube.com/apiplayer?version=3"));

   function onLoaderInit(event:Event):void
   {
      addChild(youtubeloader);
      youtubeloader.content.addEventListener("onReady",onPlayerReady);
   }
   function onPlayerReady(event:Event):void
   {
      player = youtubeloader.content;

      player.x = 200;
      player.y = 200;
      player.setPlaybackQuality("large");

      player.loadVideoById(videoURL, 0);

   }

}


El problema es que cada vez que se hace click en las miniaturas (thumbs) al cargar el video queda "encimado" al anterior, es decir, ni se detiene ni se descarga. Se que el tema se ha tratado pero no me han funcionado las opciones que se propusieron, al menos las que vi en el foro.
He intentado con "player.clearVideo();", "player.destroy();" y cuando he insertado estas lineas, el error es que "se hace referencia a un objeto nulo". Lo cual creo debe ser porque no hay ningun video cargado e intento eliminar algo que no existe.
Acudo a ustedes para saber si pueden ayudarme, ya que hace bastante tiempo que estoy luchando con esto y el tiempo no es lo que sobra, como es habitual.

Muchas gracias de antemano por cualquier recomendacion que me hagan.

STARLANCER :wink:

Por starlancer

59 de clabLevel



 

msie
Citar            
MensajeEscrito el 09 Ago 2012 01:51 pm
Veo que cada vez que se ejecuta la funciion video creas un nuevo Loader, con lo cual la referencia al anterior se pierde y el unloadAndStop carece de sentido. Mueve la creación del Loader fuera de la función

var youtubeloader:Loader = new Loader();

Luego dentro de la función agrega un try/catch al unload pues la primera vez que no tenga cargado puede dar error (en realidad deberías probarlo, a lo mejor internamente ya lo tiene)

Código ActionScript :

try{
   youtubeloader.unloadAndStop();
} catch(e:Error){}


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 09 Ago 2012 05:02 pm
Una pregunta mas: ¿De que material queres el monumento? :P
Funciono perfecto. No tuve necesidad de agregar el Try/Catch para detectar errores, ¿lo agrego igual o es indistinto?.
Tenia que sacar el loader de la funcion, nada mas. No entiendo como no pude darme cuenta de eso antes.

Muchisimas gracias, como siempre, me quito el sombrero....

STARLANCER :wink:

Por starlancer

59 de clabLevel



 

msie
Citar            
MensajeEscrito el 09 Ago 2012 05:12 pm
Si no te tira error no lo agregues, me alegro que haya funcionado :)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.