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

como pasar una variable entre peliculas de distinto nivel en flash mx

Estas en el tema de como pasar una variable entre peliculas de distinto nivel en flash mx en el foro de Flash y Actionscript en Foros del Web. hola maestros alguien sabe como cargar variables en distintos niveles de la pelicula.. osea pasar una variable que se encuentra en nivel0 a una varieble ...
  #1 (permalink)  
Antiguo 18/05/2003, 02:26
Avatar de mveraa  
Fecha de Ingreso: diciembre-2002
Ubicación: santiago-chilito
Mensajes: 1.895
Antigüedad: 15 años
Puntos: 2
Pregunta como pasar una variable entre peliculas de distinto nivel en flash mx

hola maestros alguien sabe como cargar variables en distintos niveles de la pelicula..

osea

pasar una variable que se encuentra en nivel0 a una varieble que esta en nivel1 ..

ej,

_LEVEL1.ENVIO.TEXT=SiteURL; //estando dentro de la pelicula del nivel1
gracias...

Última edición por mveraa; 20/05/2003 a las 10:25
  #2 (permalink)  
Antiguo 11/04/2006, 06:22
 
Fecha de Ingreso: febrero-2006
Mensajes: 39
Antigüedad: 11 años, 9 meses
Puntos: 0
Pregunta

encontraste la solución? Si es así, te importaría compartirla?

Porque a mi me interesaria, pues en la pelicula principal selecciono el idioma y luego voy cargando clips externos, pero no me coge las variables del txt externo seleccionado en el nivel0, así que debo pasarle la variable o algo del nivel 0 al 5 que es donde tengo los externos...
  #3 (permalink)  
Antiguo 11/04/2006, 08:14
Avatar de Panino5001
Moderatroll
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.062
Antigüedad: 13 años, 6 meses
Puntos: 775
Una posible solución es usar _global.nombrevariable.
Imaginá que tenés 2 swf: uno llamado nivel0.swf y otro nivel10.swf.
En el primer fotograma de nivel0.swf, ponés esta acción:
Código:
_global.a='hola';
loadMovieNum("nivel10.swf", 10);
this.onEnterFrame=function(){
if(_global.b!=''&&_global.b!=undefined){
trace(_global.b);
delete this.onEnterFrame;
}
}
O sea, cargás el swf llamado nivel10.swf en el nivel 10 y definís una variable llamada 'a', que luego veremos si podemos referenciarla desde nivel10.swf. Al mismo tiempo, intentás leer una variable llamada 'b', que está definida en nivel10.swf.
En el primer fotograma de nivel10.swf colocás un texto dinámico con nombre de instancia 'pepe' y colocás esta acción:
Código:
_root.pepe.text=_global.a;
_global.b='chau';
Cuando testees el swf llamado nivel0.swf verás que se cargó nivel10.swf en el nivel 10 y en el texto dinámico aparece la palabra 'hola', que habías definido como variable en nivel0.swf. Al mismo tiempo, la ventana output te dirá 'chau', que es la variable que definiste en la película nivel10.swf.
  #4 (permalink)  
Antiguo 11/04/2006, 10:07
 
Fecha de Ingreso: febrero-2006
Mensajes: 39
Antigüedad: 11 años, 9 meses
Puntos: 0
ya, pero si no paso las variables una por una, sino que en la película principal, descargo un .txt externo con todas las variables, en funcionción del idioma que haya elgido, entonces como debo hacerlo para que esas mismas variables, todas, las coja también el clip del 5 nivel??
  #5 (permalink)  
Antiguo 11/04/2006, 10:31
Avatar de Panino5001
Moderatroll
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.062
Antigüedad: 13 años, 6 meses
Puntos: 775
Simple: Tendrás que hacer un bucle con todas las variables recibidas y convertirlas a globales.
  #6 (permalink)  
Antiguo 12/04/2006, 06:22
 
Fecha de Ingreso: febrero-2006
Mensajes: 39
Antigüedad: 11 años, 9 meses
Puntos: 0
Pregunta

Hola, gracias, podrias orientarme un poco?

A ver, yo mirava de hacer esto, poniendolo en cada botón de idioma disponible, (es, en y fr), pero no me permite poner el bucle dentro del evento onrelease, pues me da error.

Código:
on(release){
	loadVariablesNum("es.txt",0);
	idioma = es;
	gotoAndPlay(3);

	variables = new Array("es.txt"); 
	longitud = variables.length; 
	for (i=0,i<longitud,i+){ 
	       "_global." + variables[i]; // aquí debería guardar los valores en un nuevo array? ¿?
	} 
}
Debo guardar las variables de algun modo,no? porque claro, el swf externo no se carga hasta más adelante, de modo que para que luego las tenga disponibles debo guardarlas, pero como puedo hacerlo? si lo meto a un array, claro, no sera lo mismo, deberé entonces indicarle uno po uno a que textfield corresponde... que lio...
  #7 (permalink)  
Antiguo 12/04/2006, 08:16
Avatar de Panino5001
Moderatroll
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.062
Antigüedad: 13 años, 6 meses
Puntos: 775
Vamos a modificar un poco el ejemplo, a ver si lo entendés (de última puedo mandarte los 2 fla y el txt).
Seguimos teniendo los 2 swf:nivel0 y nivel10, y agregamos un txt:'niveles.txt', que contiene esto:
Código:
&idiomauno=esp&idiomados=por&idiomatres=ing&
En el primer fotograma de nivel0.swf, dibujás un boton y le asignás esta acción:
Código:
on (release) {
	_root.init('niveles.txt');
}
En el mismo primer fotograma de nivel0.swf. colocás esta acción:
Código:
function init(fichero){
loadVariablesNum(fichero, 0);
_root.onData=function(){
//_global.a = _root.idiomados;
for(i in _root){
//trace (i+"="+_root[i]);
_global[i]=_root[i];
	}
}
cargar();
}

//_global.a = "hola";
function cargar(){
loadMovieNum("nivel10.swf", 10);
this.onEnterFrame = function() {
	if (_global.b != '' && _global.b != undefined) {
		trace(_global.b);
		delete this.onEnterFrame;
	}
};
}
Bien, es este bucle el que convierte todas las variables del _level0 de nivel0.swf en globales, incluídas las del txt, las cuales verificamos que estén cargadas con el evento onData
Código:
for(i in _root){
//trace (i+"="+_root[i]);
_global[i]=_root[i];
	}
En nivel10.swf, seguís teniendo en el primer fotograma un texto dinámico instanciado como pepe, y reemplazás la acción que habías escrito por esta:
Código:
_root.pepe.text=_global.idiomados;
_global.b='chau';
Como verás, las variables del txt (idiomados es una de ellas) están disponibles también en este nivel.
Espero te sirva.
  #8 (permalink)  
Antiguo 18/04/2006, 11:05
 
Fecha de Ingreso: febrero-2006
Mensajes: 39
Antigüedad: 11 años, 9 meses
Puntos: 0
Muchísimas gracias! Ahora si me coge las variables. Gracias por ejemplificarlo, ahora entiendo bien todo.


Solo me da proplemas con los textfields que tengo dentro de botones, en estos no hay manera... el problema debe estar en la ruta pero he probado de todo, en el 1r frame de la escena principal: _root.clip.boton.textfield.text=_global.variable; (los botones estan dentro e un clip), tambien sin _root, ni el clip, sino directamente el boton, luego como no iba, pues claro he caido en que el clip no esta en el primer frame sino en el 5º, de manera que claro no las coje las variables, así que he probado dentro del clip en el primer frame (del clip) directamente boton.textfield.text=_global.variable; , y también sin "boton", etc. Pero nada, sigo igual.

La verdad es que con los botones siempre tengo problemas al hacer referncia al textfield que contienen, nunca me sale y termino haciendo apaños...(un boton invisible abajo del textfield por ejemplo...) cual es la forma correcta?
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 22:10.