Comunidad de diseño web y desarrollo en internet online

Youtube en AS3 (cargar id externos)

Citar            
MensajeEscrito el 03 Jul 2012 09:05 pm
Hola. Estoy cargando un video de Youtube en as3 sin problemas. Pero necesito que el id lo tome externamente (xml?) para no tener que abrir el fla cada vez que necesito modificarlo. Se les ocurre como hacerlo? El código sería éste:

Security.allowDomain("www.youtube.com");

var my_player:Object;

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

function onLoaderInit(e:Event):void{
addChild(my_loader);
my_player = my_loader.content;
my_player.addEventListener("onReady", onPlayerReady);
}

function onPlayerReady(e:Event):void{
my_player.setSize(640,360);
my_player.cueVideoById("_OBlgSz8sSM",0);
}


El id está declarado en la última línea: my_player.cueVideoById("_OBlgSz8sSM",0);

Cómo hacer para que ese ID lo tome desde un xml?

Mil gracias aquel que tenga tiempo para responder.

Chicho.-

Por mauricioprosser

3 de clabLevel



 

msie
Citar            
MensajeEscrito el 03 Jul 2012 09:20 pm

Por exekiel21

Claber

164 de clabLevel



Genero:Masculino  

programador

chrome
Citar            
MensajeEscrito el 04 Jul 2012 01:43 pm
Muchas gracias por la respuesta. Leí el contenido del link (recién estoy estudiando programación, así que "intentando entender" de a poco). Consigo entonces leer el "id" a través del xml (trace me devuelve, por ejemplo, "_fBPHNNBgWuI", que sería un id del video de Youtube)... Ahora, cómo haría para que ese id que está leyendo del xml, lo tome mi código y lo ubique en la línea adecuada?:

my_player.cueVideoById("_fBPHNNBgWuI",0);

Perdón por la ignorancia y gracias por el tiempo y la mano

Por mauricioprosser

3 de clabLevel



 

msie
Citar            
MensajeEscrito el 09 Jul 2012 06:01 am

Código ActionScript :

var my_player:Object;
var my_loader:Loader;
var idVideo:String; // esta variable se usara para almacenar el id del video leido desde xml
//...  // aca iria tu codigo que usas para cargar el xml
function handlerXMLLoaded(e:Event):void // esta es la funcion q se ejecutar al completar la carga del xml
{
     var xml:XML = new XML(e.target.data);
     
     idVideo = xml.idVideo.toString(); // este es un ejemplo nomas, no se como obtenes el id, igual aca iria lo que esta dentro del trace que me comentaste.

cargaPlayer();
}
function cargaPlayer():void
{
Security.allowDomain("www.youtube.com");



my_loader = new Loader();
my_loader.load(new URLRequest("http://www.youtube.com/apiplayer?version=3")); 
my_loader.contentLoaderInfo.addEventListener(Event.INIT, onLoaderInit);
}
function onLoaderInit(e:Event):void{
my_player = my_loader.content;
my_player.addEventListener("onReady", onPlayerReady); 
} 

function onPlayerReady(e:Event):void
{
     addChild(my_loader);
     showVideo(idVideo);//aca le paso el id que se guardo al recibir el xml
}
function showVideo(e:String)
{   
   if (my_player) // si my_player esta definido, mando stop
   {
       my_player.stopVideo();
   } else
   {
     return; // si no esta definido, no permito que continue , xq arrojaria error al intentar accederlo.
   }    
     my_player.setSize(640,360);
     my_player.cueVideoById(e,0); //aca utilizo el string que se le paso como id
}


Si tenes mas de un video, los ids los deberias ir guardando en un array.

AS3, no hace magia, utiliza logica como cualquier lenguaje de programacion. Si sabes programar podes utilizar cualquier lenguaje. Solo es cuestion de adaptarse. Eso se logra investigando.
Al principio del foro de AS3 hay un post, el primero de todos. Ahi se encuentra mucha info para empezar a programar en as3. Pero no vas a encontrar ningun material que te enseñe a programar. Eso lo tenes que investigar aparte.

Por ultimo, tu tema era solo como obtener un id de un xml. Lo cual fue resuelto. No es practico continuar con otros temas en un mismo post.

Saludos


eXe

Por exekiel21

Claber

164 de clabLevel



Genero:Masculino  

programador

chrome
Citar            
MensajeEscrito el 09 Jul 2012 08:47 pm
Primero, mil gracias por el tiempo. Y no abrí otro tema para poder cerrar este de "cargar el id externo", ya hice que lo lea desde el xml pero no que lo cargue el video de Youtube, que era (es) el objetivo.

Traté de implementar lo que me dijiste, e interpretar cada uno de los pasos. A ver si te das cuenta en qué fallo y ya tener el código para que el bendito video de youtube tome el id...

En el xml tengo:

Código ActionScript :

<xml>
<!-- ID DEL VIDEO DE YOUTUBE -->
   <youtube video1="mQQCNW6NLbQ">
</youtube>


Y mi código en el fla, mezclando lo que me pasaste con el load del xml:

Código ActionScript :

var my_player:Object;
var my_loader:Loader;
var idVideo:String;
// esta variable se usara para almacenar el id del video leido desde xml 

// aca iria tu codigo que usas para cargar el xml
///// PARA CARGAR EL ID DEL XML...
import flash.display.*;
import flash.events.*;
import flash.net.*;

var url:String = "video_destacado.xml";
var XmlExterno:XML;

function CargarXML() {
var loader:URLLoader = new URLLoader();
ponerListeners(loader);
var peticion:URLRequest = new URLRequest(url);
loader.load(peticion);
}

function ponerListeners(dispatcher:IEventDispatcher):void {
dispatcher.addEventListener(Event.COMPLETE, completeHandler);
}

function completeHandler(event:Event):void {
   
var cargador:URLLoader = event.target as URLLoader;
XmlExterno = new XML(cargador.data);
for each(var nodo:XML in XmlExterno.elements()){
   trace(nodo.@video1);
   }
   }
   
CargarXML();

///// OK

function handlerXMLLoaded(e:Event):void
// esta es la funcion q se ejecutar al completar la carga del xml
{
     var xml:XML = new XML(e.target.data);
     
     idVideo = xml.toString();
// este es un ejemplo nomas, no se como obtenes el id, igual aca iria lo que esta dentro del trace que me comentaste.

cargaPlayer();
}
function cargaPlayer():void
{
Security.allowDomain("www.youtube.com");
Security.allowDomain("s.ytimg.com");

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

function onLoaderInit(e:Event):void{
addChild(my_loader);
my_player = my_loader.content;
my_player.addEventListener("onReady", onPlayerReady); 
} 

function onPlayerReady(e:Event):void
{
     addChild(my_loader);
     showVideo(idVideo);//aca le paso el id que se guardo al recibir el xml
}
function showVideo(e:String)
{   
   if (my_player) // si my_player esta definido, mando stop
  {
       my_player.stopVideo();
   } else
   {
    return; // si no esta definido, no permito que continue , xq arrojaria error al intentar accederlo.
  }    
     my_player.setSize(320,180);
     my_player.cueVideoById(e,0); //aca utilizo el string que se le paso como id
}



En qué estoy fallando? Nomás logro que me tire el trace pero no levanta el idVideo.

Gracias una vez más...

Por mauricioprosser

3 de clabLevel



 

msie8
Citar            
MensajeEscrito el 09 Jul 2012 11:04 pm
interpreto que el problema está en

idVideo = xml.toString();

que el "xml" fue sólo un ejemplo que pusiste, pero qué tendría que usar? la variable que llama al xml es "XmlExterno"? o qué debería poner para que "idVideo" tome el id que está tirando el trace... porque intento y no lo saco

perdón por la falta de experiencia, estamos en el intento de entender y aprender......

Por mauricioprosser

3 de clabLevel



 

msie8
Citar            
MensajeEscrito el 10 Jul 2012 12:36 am
modifique tu funcion , con esto deberia correr bien

Código ActionScript :

function completeHandler(event:Event):void {
   
var cargador:URLLoader = event.target as URLLoader;
XmlExterno = new XML(cargador.data);
for each(var nodo:XML in XmlExterno.elements())
{
  idVideo = [email protected]();
}
cargaPlayer();
}


No es solo falta de experiencia man, es desconocimiento total lo tuyo.

Suerte


eXe

Por exekiel21

Claber

164 de clabLevel



Genero:Masculino  

programador

chrome
Citar            
MensajeEscrito el 10 Jul 2012 12:51 am
Gracias por la ayuda!

Por mauricioprosser

3 de clabLevel



 

msie8

 

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