Comunidad de diseño web y desarrollo en internet online

Pasar parametros a una clase, me toma "null".

Citar            
MensajeEscrito el 16 Nov 2012 05:52 pm
Saludos:
Tengo una clase que cree llamada VideoYouTube. Esta clase contiene el codigo para abrir el reproductor para ver videos de YouTube. Dejo aqui debajo el codigo de la clase:

VideoYouTube.as

Código ActionScript :

package 
{
   import flash.display.DisplayObject;
   import flash.display.Loader;
   import flash.display.Sprite;
   import flash.events.Event;
   import flash.net.URLRequest;
   import flash.system.Security;


   public class VideoYouTube extends Sprite
   {
      private var loader:Loader;
      private var player:Object;
      private var url:String;

      public function VideoYouTube()
      {

      }
      public function Play(url):void
      {
         Security.allowDomain("http://www.youtube.com");
         Security.allowDomain('http://gdata.youtube.com');
         Security.allowInsecureDomain('http://gdata.youtube.com');
         Security.allowInsecureDomain('http://www.youtube.com');

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

      private function onLoaderInit(event : Event):void
      {
         player = loader.content;
         player.addEventListener("onReady", onPlayerReady, false, 0, true);
         addChild(DisplayObject(player));
         loader.contentLoaderInfo.removeEventListener(Event.INIT, onLoaderInit);
         loader = null;
      }
      private function onPlayerReady(event : Event):void
      {
         player.removeEventListener("onReady", onPlayerReady);

         player.setSize(640, 360);
         player.loadVideoById(url);
         trace(url);
      }

   }
}


Llamo a la clase de la siguiente manera, desde la linea de tiempo:

Código ActionScript :

import VideoYouTube;

var video:VideoYouTube = new VideoYouTube();

video.Play("1_ULUDeJDEA");
addChild(video);


Intente crear un metodo para dirigirme al video sin que cree el player cada vez que lo llamo, de ahi la linea "video.Play("1_ULUDeJDEA");".
El problema es que me sale el siguiente error:

*** Violación de la seguridad Sandbox ***
El dominio de seguridad 'http://s.ytimg.com/yts/swfbin/apiplayer3-vflKKxpyf.swf' ha intentado acceder al contexto incompatible 'file:///C|/wamp/www/pruebas/2012/videoPrueba.swf'

Siempre haciendo las pruebas en mi servidor local de mi maquina. En el servidor Host aparece solo el reproductor de YouTube, pero no video.
En un trace que aparece en el codigo, me sale "null" es decir que el video que le paso alli no llega. Mas que el error de seguridad me interesa principalmente solucionar el tema del "null".
No se que puedo haber estando haciendo mal, espero puedan ayudarme.

Muchas gracias
STARLANCER

Por starlancer

59 de clabLevel



 

msie
Citar            
MensajeEscrito el 16 Nov 2012 07:31 pm
url sale null porque lo recibes como parámetro en la función pero no lo copias a la propiedad de la clase

Código ActionScript :

 public function playVideo(url):void
      {
           this.url = url
(...)


Cambie el nombre a playVideo porque Play es un método de la clase MovieClip, y además por convención los nombres de los métodos no se ponen en mayúscula.
El error de seguridad es por el sandbox, al abrirlo con doble click del archivo es local, y los permisos para cargar desde YouTube son de red. Si lo ves en un servidor no pasa

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Nov 2012 05:28 pm
Muchisimas gracias por tu ayuda. Funciono perfecto.
Mil disculpas por la mal escritura de los nombres de los metodos, ya quedo arreglado.

Una pregunta mas: ¿como podria hacer para que, cuando salgo de la seccion "videos", el video deje de reproducirse?. Utilice "stopAll" y detiene todos los sonidos, pero el del video no.
No se si debo hacer otro post o sirve que pregunte aqui mismo.

Muchas gracias
STARLANCER :wink:

Por starlancer

59 de clabLevel



 

msie
Citar            
MensajeEscrito el 18 Nov 2012 12:23 am
Probaste removeChild, loader.unload o sino mirar el API del player de YouTube para ver como detenerlo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 Nov 2012 05:28 pm
Probe loader.unload() pero no funciona.
Pienso que el problema que tengo es porque tengo el player en un swf externo y cuando quiero cambiar de opcion en el swf principal, se descarga el swf del video pero no asi el audio. El resto de la opciones que tengo descarga todo bien, salvo videos.

Gracias
STARLANCER :wink:

Por starlancer

59 de clabLevel



 

msie
Citar            
MensajeEscrito el 19 Nov 2012 12:11 pm
Entonces tienes que detener el player, no se como será el API, pero calculo que algo tan simple como player.stop()

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 19 Nov 2012 06:06 pm
Para detener el video seria: player.stopVideo();.
Antes tuve un problema similar con el sonido, fue ayuda tuya por cierto. Se me soluciono el tema del sonido que se me creaba una y otra vez las veces que hacia click creando un metodo, eso mismo quise hacer aqui. La diferencia que tengo ahora es que al video lo llama un swf externo, y en aquella ocasion fue la pelicula principal. De ahi que con el sonido me resulto mas facil darme cuenta, pero ahora con los videos no se como hacerlo.

Gracias
STARLANCER :wink:

Por starlancer

59 de clabLevel



 

msie
Citar            
MensajeEscrito el 19 Nov 2012 06:08 pm
Ok, entonces usa player.stopVideo antes de moverte a otra sección ....

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 21 Nov 2012 05:31 pm
Esa es la idea.
El problema es que no se como hacerlo en AS3. Cargo los swf externos mediante un loader que luego agrego mediante addChild a un clip "contenedor" que tengo creado.
En este caso, el swf externo que estoy cargando es "video" y es justamente este quien hace uso de la clase que crea el reproductor de video. Pero no se como puedo hacer para detener el video desde la pelicula principal.

Muchas gracias
STARLANCER :wink:

Por starlancer

59 de clabLevel



 

msie

 

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