Foros del Web » Creando para Internet » Flash y Actionscript »

paso de variables entre swf

Estas en el tema de paso de variables entre swf en el foro de Flash y Actionscript en Foros del Web. Tengo un swf (principal), al pulsar un boton cargo otro swf, ¿como puedo obtener el valor de algunas variables del swf (principal) en el swf ...
  #1 (permalink)  
Antiguo 06/04/2005, 08:36
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 14 años, 7 meses
Puntos: 0
paso de variables entre swf

Tengo un swf (principal), al pulsar un boton cargo otro swf, ¿como puedo obtener el valor de algunas variables del swf (principal) en el swf que acabo de cargar?
  #2 (permalink)  
Antiguo 06/04/2005, 08:42
cmc
 
Fecha de Ingreso: febrero-2003
Ubicación: Capital
Mensajes: 1.317
Antigüedad: 14 años, 10 meses
Puntos: 1
explica un poco mas la forma en que cargas el segundo swf, en funcion de eso es que tenes que pasar variables de una determinada manera
__________________
Claudio Caldareri
diseñador Multimedial
www.disemedios.com.ar
  #3 (permalink)  
Antiguo 06/04/2005, 13:32
 
Fecha de Ingreso: marzo-2004
Mensajes: 338
Antigüedad: 13 años, 9 meses
Puntos: 2
Buenas sqa212! Quizas esto te ayude:

http://www.webnueva.com/crono/tutori.../swftoswf1.htm

Un saludo!
__________________
SiMpLiFiKa
http://www.manitasdelweb.com
  #4 (permalink)  
Antiguo 06/04/2005, 13:35
 
Fecha de Ingreso: junio-2004
Mensajes: 67
Antigüedad: 13 años, 5 meses
Puntos: 0
sqa212
Veamos...

Si en la movieClip principal en un frame pones por ejemplo

var Importe:Number;
Importe = 100;

Si desde este movieClip cargar el segundo...
entonces dentro del segundo puedes saber el valor en Importe asi...

trace("El valor es "+_root.Importe);

mirate el scope de las variables con _root o _parent.

Espero haber ayudado.

Gibi
www.joies.mataller.com
  #5 (permalink)  
Antiguo 06/04/2005, 13:51
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 14 años, 7 meses
Puntos: 0
Cuando he vuelto a mirar el post me he encontrado con nuevas respuestas de che y gibi, que voy a mirar ahora , a la pregunta que me hace cmc:

Me gustaria saber como pasar variables tanto para los swf cargados a traves de un boton,
como para los swf cargados directamente.
Si hay alguna forma mejor de cargar los swf con un boton o directamente, me gustaria saberlo tambien.

En el boton que esta en el swf principal pongo este codigo para cargar el swf.

on (release)
{
_root.createEmptyMovieClip("contenedor1", 4);
loadMovie("cb1.swf", "contenedor1");
contenedor1._x = 150;
contenedor1._y = 20;
}




Si cargase los swf sin hacer uso de ningun boton.

for(i=0;i<4;i++)
{
_root.createEmptyMovieClip("clip"+i,i);
_root["clip"+i]._x=40+i*20;
_root["clip"+i]._y=40+i*20;
_root["clip"+i].loadMovie("archivo"+i+".swf");
}

Gracias a todos
  #6 (permalink)  
Antiguo 06/04/2005, 14:00
 
Fecha de Ingreso: junio-2004
Mensajes: 67
Antigüedad: 13 años, 5 meses
Puntos: 0
Da lo mismo para el acceso a variables.


Imagina lo siguiente:

En el clip cb1.swf en pones
Euro = 166.386;

Y en el clip principal lo que tu has diseñado.

on (release)
{
_root.createEmptyMovieClip("contenedor1", 4);
loadMovie("cb1.swf", "contenedor1");
contenedor1._x = 150;
contenedor1._y = 20;

label_txt.text = "20 Euros valen en Pts " + (contenedor1.Euro * 20);

}


Es decir ha igual que accedes a las variables del objeto contenedor1
como pueden ser _y _x tambien puedes acceder a las que crees tu...
y tambien les puedes cambiar el valor...
__________________
:pirata: Gibi Velazquez

www.joiesmc.com
  #7 (permalink)  
Antiguo 06/04/2005, 14:25
cmc
 
Fecha de Ingreso: febrero-2003
Ubicación: Capital
Mensajes: 1.317
Antigüedad: 14 años, 10 meses
Puntos: 1
No, disculpa pero no da lo mismo pasar variables de un swf que contiene a otro que de uno que esta compartiendo el html con otro.
en el primer caso con utilizar las rutas alcanza, en el segundo tenes que utilizar local conection
__________________
Claudio Caldareri
diseñador Multimedial
www.disemedios.com.ar
  #8 (permalink)  
Antiguo 07/04/2005, 11:22
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 14 años, 7 meses
Puntos: 0
En el link que sugirio chem explica el uso de local conection,
que por las pruebas que he realizado estoy de acuerdo con cmc,
solo se puede usar cuando dos swf independientes comparten
la misma pagina html, no cuando un movieclip ha sido creado y
cargado desde un swf a otro swf
, haciendo esto ultimo en lugar de mostrar en el texto dinamico el valor de la variable muestra:
_level0.contenedor1.vari

En mi caso en el que quiero tener un swf principal y a partir
de el cargar nuevos swf dentro de el creo que tendre que usar
las rutas para pasar las variables.
¿Algun link sobre como usar rutas?

Con respecto a lo que me contesto gibi,
donde dices:
label_txt.text = "20 Euros valen en Pts " + (contenedor1.Euro * 20);

¿tengo que poner en el cb1.swf un una capa llamada label_txt
y en ella un campo dinamico para que me muestre:
"20 Euros valen en Pts " + (contenedor1.Euro * 20);?

En tu primera contestacion me pones,

trace("El valor es "+_root.Importe);
¿Que tengo que poner en el segundo movie clip
para visualizarlo?
Gracias
  #9 (permalink)  
Antiguo 07/04/2005, 11:56
cmc
 
Fecha de Ingreso: febrero-2003
Ubicación: Capital
Mensajes: 1.317
Antigüedad: 14 años, 10 meses
Puntos: 1
El único link que tengo a mano es el mio, pero no es especifico de rutas sino de carga en niveles entra en www.disemedios.com.ar y luego anda a “master” / “flash” y busca carga en niveles

Adema acá te dejo algún dato mas al respecto

Supongamos que tenes una película principal "fondo.swf" y una secundaria productos.swf

En la de fondo colocas este script en el primer frame
loadMoviNum("productos.swf", 10);
Esto lo que hace es cargarte la película productos.swf en el nivle 10.
Ahora bien supongamos que la película productos tiene en su escenario un movi clip que como nombre de instancia le colocas "Ins_produc1", entonces en la película principal donde cargaste a productos en el nivel 10 le decís que controle la posición del movi de productos y lo haces con esto

_level10.Ins_produc1._x = 100;
_level10.Ins_produc1._y = 100;

Con esto estas controlando desde la película principal a un objeto que esta en determinado nivel.

Ahora supongamos la inversa supongamos que tienes un objeto en la película de fondo llamado "Ins_Boton" a el cual quieres controlar desde la película del nivel 10 entonces puedes hacer esto

_level0.Ins_Boton._x = 100;

o también puedes hacer esto
_root.Ins_Boton._x = 100;

Esto es debido a que el root y el level0 en este caso es lo mismo.

Además de esto tenes _parent y this que básicamente lo que hacen es: el primero hace referencia a una línea de tiempo anterior a la actual, en donde estas colocando el _parent y el segundo hace referencia al mismo objeto esto se utiliza cuando colocas mc dentro de otro mc o botones dentro de un mc o para mil cosas mas que te vas a ir dando cuenta.

Bueno espero que te sirva.
suerte
__________________
Claudio Caldareri
diseñador Multimedial
www.disemedios.com.ar
  #10 (permalink)  
Antiguo 07/04/2005, 12:01
Avatar de junihh  
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 13 años, 10 meses
Puntos: 7
El trace fue solo para visulizar el resultado si necesidad de insertarlo en ningun campo de variable. Tienes la opcion de crear la varible via script o crear un campo de variable manualmente en el stage.
__________________
JuniHH
- Mi blog
- Mi portafolio
  #11 (permalink)  
Antiguo 07/04/2005, 17:27
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 14 años, 7 meses
Puntos: 0
Gracias cmc y junihh, es que llevo tiempo sin usar flash y estoy un poco perdido
  #12 (permalink)  
Antiguo 08/04/2005, 08:31
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 14 años, 7 meses
Puntos: 0
Aunque me habeis dado bastante informacion,no lo consigo.
He creado un archivo zip con todos los fla y swf que estoy
utilizano y un archivo de texto en el que explico,lo que ocurre.
Lo podeis descargar desde aqui si quereis ayudarme:

http://es.geocities.com/sqa212/COMUNICACION.zip

Gracias a todos
  #13 (permalink)  
Antiguo 26/04/2005, 13:36
 
Fecha de Ingreso: junio-2004
Mensajes: 67
Antigüedad: 13 años, 5 meses
Puntos: 0
Perdona mi tardanza, pero ya se que problema tienes.

te explico, creo que lo realizas al reves...
veras, tu codigo...

on (release)
{
_root.createEmptyMovieClip("contenedorB1", 20);
loadMovie("pantalla1.swf", "contenedorB1");
_root.contenedorB1._x = 150;
_root.contenedorB1._y = 20;
_level20.valorvarpantalla1 = "Var 1 cargada desde swf principal";
}
El error es que flash no se detiene en el loadMovie es decir siguie su ejecucion, por tanto _level20.valorvarpantalla1 no existe (por muy rapido que sea tu pc) hasta que no se ha cargado todo el loadMovie.
Las coordenadas _x y _y si te funciona por que son propiedades directas en createEmptyMovieClip, es decir del objeto MovieClip que creas y este es instantaneo.
Mi solucion es

on (release)
{
_root.createEmptyMovieClip("contenedorB1", 20);
loadMovie("pantalla1.swf", "contenedorB1");
_root.contenedorB1._x = 150;
_root.contenedorB1._y = 20;
_root.valor = "Var 1 cargada desde swf principal";
}


Y en el frame 1 de pantall1.swf pones

valorvarpantalla1 = _root.valor;

como _root.valor se crea instantaneamente, al carga el frame 1 de pantalla1.swf ya existe y por tanto lo repinta bien en pantalla.


mmmmhhh casi lo tenias....
Cosilllas de FLASH....


espero te sirva...
__________________
:pirata: Gibi Velazquez

www.joiesmc.com
  #14 (permalink)  
Antiguo 27/04/2005, 03:57
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 14 años, 7 meses
Puntos: 0
Gracias gibi, no tengo nada que perdonarte, pero si mucho que
agradecerte. No ha sido tarde, porque aun no lo habia solucionado,
y no sabes la necesidad que tenia de conseguir esto, de nuevo muchas gracias.
  #15 (permalink)  
Antiguo 09/12/2008, 12:13
Avatar de initiald  
Fecha de Ingreso: diciembre-2008
Ubicación: Lima
Mensajes: 14
Antigüedad: 9 años
Puntos: 0
Respuesta: paso de variables entre swf

Hola amigo aca te mando una solucion practica.

Lo que gabby te propuso es verdad que funciona si tu quieres mandar una variable al clip de pelicula cargado.

Pero si haces lo inverso no funciona osea si quieres optener una variable del clip de pelicula cargado con loadMovie..

Ahora te explicare un metodo unilateral que te permitira obtener la variable con localconnection.

Creas un clip de pelicula que permita ser el emizor en esto programaremos una variable dentro del clip:

Código:
var texto:String = "Hola mundo";
emisor=new LocalConnection();
emisor.send("conectado","probar",texto);
Ahora crearemos otro clip el receptor que por loadmovie abrira el clip anterior

Código:
cuas.loadMovie("emizor.swf");
receptor=new LocalConnection();
receptor.probar=function(datos){texto=datos;}
receptor.connect("conectado");
  #16 (permalink)  
Antiguo 09/12/2008, 12:15
Avatar de initiald  
Fecha de Ingreso: diciembre-2008
Ubicación: Lima
Mensajes: 14
Antigüedad: 9 años
Puntos: 0
Respuesta: paso de variables entre swf

Hola amigo aca te mando una solucion practica.

Lo que gabby te propuso es verdad que funciona si tu quieres mandar una variable al clip de pelicula cargado.

Pero si haces lo inverso no funciona osea si quieres optener una variable del clip de pelicula cargado con loadMovie..

Ahora te explicare un metodo unilateral que te permitira obtener la variable con localconnection.

Creas un clip de pelicula que permita ser el emizor en esto programaremos una variable dentro del clip:

Código:
var texto:String = "Soy el mensaje de un SWF EXTERNO";
emisor=new LocalConnection();
emisor.send("conectado","probar",texto);
Ahora crearemos otro clip el receptor que por loadmovie abrira el clip anterior

Código:
//Contenedor
this.createEmptyMovieClip("contenedor1", 1);
image_mc._x = 0;
image_mc._y = 0

contenedor1.loadMovie("emizor.swf");
receptor=new LocalConnection();
receptor.probar=function(datos){
texto=datos;
trace(texto);
}
receptor.connect("conectado");

Última edición por initiald; 09/12/2008 a las 12:23
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:24.