Comunidad de diseño web y desarrollo en internet online

Interactuar con películas externas cargadas dentro de otra

Citar            
MensajeEscrito el 03 Nov 2007 06:15 pm
Hola, q tal? como muchos otros desarrolladores hace poco que he emigrado a AS3 desde la versión anterior, y hasta ahora he ido adaptándome sin demasiado problema, pero no logro solucionar algo que creo que es imprescindible en muchas ocasiones y de lo que no hay mucha información en la red. A lo que vamos...

Tengo claro que en vez de utilizar "loadMovie" para cargar una película externa dentro de un clip contenedor hay que utilizar el método "load" y luego colocarlo donde quieras mediante "addChild".

Hasta aquí todo va bien y logro visualizar la película cargada, pero... como puedo por ejemplo enviar una orden o una variable desde la palícula secundaria a la principal? me explico, yo tengo la película principal, y en ésta cargo una película externa, desde la que deseo enviar algo o poner en play simplemente la película principal...

En esta segunda he puesto MovieClip(parent).play(); pero flash me reporta el siguiente error:
"Error de conversión forzada: no se puede convertir flash.display::Loader@2d7b8b1 en flash.display.MovieClip."

A contínuación expongo los códigos uilizados en ambas películas:

//-------------- Código pelicula principal:

stop();

var carga:Loader = new Loader();
carga.load(new URLRequest("contenido.swf"));
this.addChild(carga);

//-------------- Código pelicula secundaria (contenido.swf):
//--- En un determinado fotograma de esta pelicula quiero que la principal se ponga en play.

MovieClip(parent).play();


Pienso que es algo relativamente sencillo (o lo era, jejeje) pero llevo ya tres dias intentándo averiguarlo. Espero que alguien me pueda ayudar.

Gracias de antemano.

Por Dj_Pekao

10 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 06 Nov 2007 07:00 pm
con As2 no suponia ningun problema, pero parece que ahora con as3 esta la cosa jodia, he hecho un intento y no he conseguido nada tampoco.
Ya se lo que no tengo que hacer para no comemerme la cabeza :lol:

habrá que usar LocalConnection?¿?

Habra que cambiar el chip con el jodio as3, yo estoy haciendo una wel sobre actionscript 3, haber si aprendo un poco http://www.studio-as3.com, tiene poca cosa pero la pienso llenar de clases y cosas interesantes. Bueno haber si algun Friki de los muchos que hay soluciona esto.

Saludos

Por Jorgeff

33 de clabLevel



Genero:Masculino  

Madrid

firefox
Citar            
MensajeEscrito el 06 Nov 2007 07:32 pm
Hola Jorgeff, gracias por haber intentado solucionar el problema que planteaba. He visto la web que estás construyendo, me gusta, no queda recargada y el diseño me gusta (la única recomendación es que los fps de la película los pongas a 30, por que parece que cuando el menú superior cae se ve un poco a saltos). Nosotros tb estamos haciendo ya las cosas en AS3, y la verdad es que la forma de estructurar las cosas, editar el diseño de componentes, etc... está mucho mejor, pero sigo sin solucionar el tema de como comunicar películas entre sí, y ahora mismo tengo una web a medias q no puedo continuar justo por ese motivo, espero solucionarlo pronto.

Un saludo. www.pekao.es

Por Dj_Pekao

10 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 06 Nov 2007 07:42 pm
intentaste con:

Código :

MovieClip(this.parent).play();

Por master_of_puppetz

Claber

2483 de clabLevel

7 tutoriales
3 articulos

Genero:Masculino   Premio_Secretos

WebDev (Flex + PHP + JS)

firefox
Citar            
MensajeEscrito el 06 Nov 2007 07:50 pm
Hola master_of_puppetz, la verdad es que si lo he probado, y de hecho funciona para clips que están dentro de una misma pelicula, pero no funciona cuando cargas peliculas externas. Por ejemplo, si tengo la pelicula principal llamada index.swf y cargo dentro de ésta una llamada noticias.swf no puedo controlar index.swf desde esta última, ni para enviar variables ni para controlar la reproducción de la linea de tiempo, etc...

En as2 era sencillo, cargabas una peli externa dentro de un movieclip contenedor y ya interactuabas con ella como si fuera un clip cualquiera en el escenario, pero ahora no se como co_o se hace... jeje y mira que pruebo nuevos métodos todos los dias, pero este tema se me ha atravesado.

Gracias. Un saludo.

Por Dj_Pekao

10 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 06 Nov 2007 08:05 pm
wenas, me alegro que te guste ¡
He estado probando cosas con stage, root y nada y con las variables tampoco.
Has probado con LocalConnection?, yo nunca lo he usado, pero lo mismo con eso consigues lo que quieres.

Pues tengo la película a 24 fotogramas y desde mi ordenador se ve todo bien, lo mismo es cosa de la memoria, nose..eske he metido un clip de estos que dejan tiritando al flash.

Pero weno como tengo que hacer una intro decente seguiré tu consejo y lo pondré en 30.

saludos

Por Jorgeff

33 de clabLevel



Genero:Masculino  

Madrid

firefox
Citar            
MensajeEscrito el 06 Nov 2007 08:10 pm
mira como he obtenido una posible respuesta:
Tengo un .fla llamado main.fla con 5 frames, el 1 y el 5 son key frames.
En el 1, no hay nada en el stage, mas lo que va a cargar el Loader, tengo esto en acciones:

Código :

stop();
var carga:Loader = new Loader();
carga.load(new URLRequest("Untitled-1.swf"));
this.addChild(carga);


en el 5, tengo un cuadrito, para verificar que realmente llegó al 5 y tengo estas acciones:

Código :

stop();


ahora, el Untitled-1.fla, que ya exportado es Untitled-1.swf, tiene unos cuadritos en el unico frame que tiene y en el codigo tiene esto:

Código :

var contenedor:MovieClip = MovieClip(this.parent.parent);
contenedor.gotoAndPlay(2);


Esto va a hacer, que cuando cargue Untitled-1.swf, le haga un gotoAndPlay(2) a lo que vendría siendo el contenedor de todo esto. Este problema va mas con "niveles" que creo que ya no se les llama así en AS3, pues si te das cuenta, lo que hace flash, es crear un Contenedor Principal, en este caso el main.swf, luego con tu codigo, creas otro contenedor, que es la variable carga de tipo Loader, por lo que para poder llegar a la línea de tiempo de main, tienes que subir por dos niveles, esto se ve en el this.parent.parent, yo lo veo asi como: "a partir de aquí (this), sube uno (parent), sube otro (parent), y llegas".

Pues espero que me hayas entendido y esto te sirva para resolver tu problema.
Saludos! ^^

Por master_of_puppetz

Claber

2483 de clabLevel

7 tutoriales
3 articulos

Genero:Masculino   Premio_Secretos

WebDev (Flex + PHP + JS)

firefox
Citar            
MensajeEscrito el 06 Nov 2007 09:07 pm
Master_of_Puppetz eres el pu_o amo. Me has salvado la vida. El código de la pelicula principal lo tenía correcto, pero tú has dado con la clave de la película secundaria:

var contenedor:MovieClip = MovieClip(this.parent.parent);
contenedor.gotoAndPlay(2);

Eso es lo que no lograba sacar !!!

Muchas gracias tio, en serio, se agradece la sabiduría y las molestias, jejejee.... graciassssss !!!

Por Dj_Pekao

10 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 06 Nov 2007 09:23 pm
no son molestias :wink: , para eso esta el foro, para ser ayudado y ayudar en lo que podamos.

Saludos! ^^

Por master_of_puppetz

Claber

2483 de clabLevel

7 tutoriales
3 articulos

Genero:Masculino   Premio_Secretos

WebDev (Flex + PHP + JS)

firefox
Citar            
MensajeEscrito el 15 Sep 2008 03:15 pm
Yo intente lo mismo pero me salio este error que puede ser?????

no se puede convertir flash.display::Loader@329b3a1 en flash.display.MovieClip

Muchas Gracias

Por lopezquekk

44 de clabLevel



 

Medellin

firefox
Citar            
MensajeEscrito el 15 Sep 2008 04:04 pm
Mira a ver si este post te ayuda.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 18 Sep 2008 05:26 pm
Aver amigos, yo tengo un problema similar, tengo varias peliculas de flash hechas con AS2, (exportadas de ppt a swf con openoffice) y necesito cargarlas dentro de un flex3 (AS3), he leido y en todos los documentos dice que no se puede acceder a AS2 de AS3 a menos que haya un localconnection, pero, los archivos de AS2 no los puedo modificar para ponerle la localconnection, alguno de uds sabe como interactuar de AS3 a AS2 de alguna otra forma????

Saludos

Por oware

10 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 21 Oct 2008 11:01 pm
He estado probando las líneas "var contenedor:MovieClip = MovieClip(this.parent.parent);
contenedor.gotoAndPlay(2);" en un fla que tengo pero sin exito, lo que quiero es que cargue una película externa y cuando llegue a un determinado punto de esta, cambie de escena en la película principal.

He decidido hacer los archivos de muestra tal y como comentó master_of_puppetz, pero tampoco funciona, mi swf carga el archivo externo pero este no da ninguna orden de cambiar de frame de la película principal, o si la da, por algun motivo no funciona, alguien tiene alguna idea de porqué me pasa esto?


Gracias, y saludos!

Por Sake

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Oct 2008 06:54 am

Sake escribió:

cuando llegue a un determinado punto de esta, cambie de escena en la película principal.

Ponle una etiqueta al frame y haz el goto sobre un label de frame -NUNCA funcionó el gotoAndPlay("Escena",frame) desde otra línea de tiempo.

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Oct 2008 12:17 pm
Gracias, no lo sabia, lo he intentado pero no me ha funcionado, y después se me ha ocurrido probar con 3 parents en el ultimo frame del archivo externo:

Código :

var contenedor:MovieClip = MovieClip(this.parent.parent.parent);
contenedor.gotoAndPlay("canvi");
stop();

Y en el frame "canvi" de la película principal he puesto:

Código :

stop();
gotoAndPlay ("1", "Menu1");


y funciona a la perfección! muchísimas gracias!

Por Sake

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Oct 2008 09:44 pm
hola, estaba buscando una solucion a un problema muy similar al problema que inció este foro el que solucionaron con

var contenedor:MovieClip = MovieClip(this.parent.parent);
contenedor.gotoAndPlay(2);

yo no se mucho de AS 3.0 pero en ese codigo se puede hacer para que un boton tenga la funcion de llevar al contenedor (en este ejemplo el "main.fla") y no que lo lleve automaticamente como lo hace en ese ejemplo?...no se me explico???

Por paulo098

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Oct 2008 09:52 pm
hola, estaba buscando una solucion a un problema muy similar al problema que inció este foro el que solucionaron con

var contenedor:MovieClip = MovieClip(this.parent.parent);
contenedor.gotoAndPlay(2);

yo no se mucho de AS 3.0 pero en ese codigo se puede hacer para que un boton tenga la funcion de llevar al contenedor (en este ejemplo el "main.fla") y no que lo lleve automaticamente como lo hace en ese ejemplo?...no se me explico???

gracias por leer :?

Por paulo098

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Ene 2009 11:05 pm
hola a todos

tengo el siguiente codigo

stop();
var carga:Loader = new Loader();
carga.load(new URLRequest("contenido.swf"));
this.addChild(carga);

pero no me funciona lo uinico que me marca que es : No se a podido cargar la clase 'Loader'

Alguien tiene idea de que puedo hacer?

Gracias

Por capy89

1 de clabLevel



 

guadalajara

msie7
Citar            
MensajeEscrito el 23 Ene 2009 09:28 am
Debes importar la clase Loader (supongo que también la URLRequest)

Código ActionScript :

import flash.display.Loader;
import flash.net.URLRequest;
...
tu código aquí

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Ene 2009 09:21 pm
hola eliseo2

primero que nada gracias por tu ayuda

coloque el codigo que mencionas y aunque con diferentes palabras sigue ocurriendo lo mismo no puedo cargar la clase Loader, este es el error que me marca

**Error** Escena=Escena 1, capa=Capa 1, fotograma=1:Línea 4: No se ha podido cargar la clase 'flash.display.Loader'.
var carga:Loader = new Loader();

**Error** Escena=Escena 1, capa=Capa 1, fotograma=1:Línea 5: No se ha podido cargar la clase 'flash.net.URLRequest'.
carga.load(new URLRequest("contenido.swf"));

que solucion puede aver?

Por capy89

1 de clabLevel



 

guadalajara

msie7
Citar            
MensajeEscrito el 28 May 2010 10:28 pm
Oye y que tal si son variables a las que quiero accesar?

Es decir en la pelicula principal tengo una variable... por ej.

var carga:Loader = new Loader();
carga.load(new URLRequest("uno.swf"));
addChild(carga).name = "carga";

/// Miserable linea de código que da jaqueca
var escondidillas:Number = 5;


En mi pelicula secundaria deseo evaluar esa variable por medio de un condicional.

if (this.parent.parent.escondidillas == 5){
trace ("Esto si que salio bien");
} else { trace ("Felíz Día de la Marmota");
}


NO FUNCIONA!!!

Por buhomorado

3 de clabLevel



Genero:Masculino  

msie8
Citar            
MensajeEscrito el 24 Jun 2010 08:22 am
@buhomorado, cuando en ActionScript 3 llamas a la propiedad "parent" de un DisplayObject lo que te devuelve es un DisplayObjectContainer y no puedes acceder a las variables contenidas en un DisplayObjectContainer ya que no es una clase dinámica, si la variable se encuentra en la película principal esta es un MovieClip por lo que tendrías que hacer un cast para acceder a sus variables:

Código ActionScript :

if (MovieClip(this.parent.parent).escondidillas == 5)

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox

 

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