Estoy aprendiendo a utilizar AS3 y llevo 8 días rompiéndome la cabeza para solucionar este problema, Ojalá podais ayudarme.
Necesito cargar una serie de videos de Youtube en un swf, logro cargar el primero mediante una función en el swf inicial (main.swf),sobre el inicial cargo otro swf (movie2.swf)que tiene opciones de búsqueda y selección de videos , hasta aquí todo bien. he utilizado esta página com referencia :http://code.google.com/intl/en/apis/youtube/flash_api_reference.html
Me doy cuenta que no puedo acceder a la función que carga los videos en main.swf desde movie2.swf por el cambio del concepto de root. Así que decido crear una clase a la que pueda acceder desde cualquiera de los swf. Por medio de la clase que creé sólo se escucha el video pero no se ve, el código de la clase es el siguiente:
Código ActionScript :
package youTube{ //Importo las clases necesarias import flash.display.Sprite; import flash.display.MovieClip; import flash.display.Loader; import flash.events.*; import flash.net.*; import flash.system.Security; //Evito problemas de crossdomain Security.allowInsecureDomain("*"); Security.allowDomain("*"); public class youTube extends Sprite{ public var player:Object; public var videoId:String; public var loader:Loader = new Loader(); public function youTube(videos:String=null){ videoId=videos; // Contenedor loader.contentLoaderInfo.addEventListener(Event.INIT, onLoaderInit); loader.load(new URLRequest("http://www.youtube.com/apiplayer?version=3")); } //Listeners private function onLoaderInit(event:Event):void { addChild(loader); loader.content.addEventListener("onReady", onPlayerReady); loader.content.addEventListener("onError", onPlayerError); loader.content.addEventListener("onStateChange", onPlayerStateChange); loader.content.addEventListener("onPlaybackQualityChange", onVideoPlaybackQualityChange); } private function onPlayerReady(event:Event):void { // Event.data contains the event parameter, which is the Player API ID trace("player ready:", Object(event).data); player = loader.content; //Este lo ejecuta player.loadVideoById(videoId); //Este lo carga y pausa //player.cueVideoById(videoId); // Tamaño y posición player.setSize(480, 360); player.x=385; player.y=113; } private function onPlayerError(event:Event):void { // Event.data contains the event parameter, which is the error code trace("player error:", Object(event).data); } private function onPlayerStateChange(event:Event):void { // Event.data contains the event parameter, which is the new player state trace("player state:", Object(event).data); } private function onVideoPlaybackQualityChange(event:Event):void { // Event.data contains the event parameter, which is the new video quality trace("video quality:", Object(event).data); } // Función para parar la ejecución del video public function destruir(){ player.stopVideo(); player.clearVideo(); player.destroy(); loader.unload(); } } }
El código en el swf desde donde llamo a la clase es:
Código ActionScript :
import youTube.youTube; var YT:youTube= new youTube("u1zgFlCw8Aw");
En fin gracias de antemano por vuestro tiempo y ojalá me podais decir que estoy haciendo mal.