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

mostrar animaciones según variable

Estas en el tema de mostrar animaciones según variable en el foro de Flash y Actionscript en Foros del Web. Buenas! Quisiera por favor pedir si pueden ayudarme a pulir este codigo para que funcione. Lo que necesito lograr es lo siguiente: Tengo en Flash ...
  #1 (permalink)  
Antiguo 22/12/2009, 12:15
Avatar de alealvaro  
Fecha de Ingreso: junio-2004
Ubicación: BA - Argentina
Mensajes: 210
Antigüedad: 20 años, 5 meses
Puntos: 12
mostrar animaciones según variable

Buenas! Quisiera por favor pedir si pueden ayudarme a pulir este codigo para que funcione. Lo que necesito lograr es lo siguiente:
Tengo en Flash diseñadas animaciones que comienzan en los frames 2, 20, 40, 60, 80. Desde PHP ingreso un valor a la película por FlashVars, por ejemplo "24315" y lo que necesito es que en Flash interprete ese número, y vaya reproduciendo las animaciones, siendo 2 la animación del frame 2, 4 la animación del frame 60... etc

Hasta ahora tengo esto pero no hace lo que quiero...

Código:
var miparametro:Object=LoaderInfo(this.root.loaderInfo).parameters;

function animar(p:Number) {
	var i:int;
	var orden:Array=p.split("");
	for (i = 0; i < 5; i++) {
		var q:Number=orden[i];
		switch (q) {
			case 1 :
				gotoAndPlay(2);
				break;
			case 2 :
				gotoAndPlay(20);
				break;
			case 3 :
				gotoAndPlay(40);
				break;
			case 4 :
				gotoAndPlay(60);
				break;
			case 5 :
				gotoAndPlay(80);
				break;
		}
	}
}
LoaderInfo(this.root.loaderInfo).parameters;
animar(Number(miparametro.variable1));
elnumero.text=miparametro.variable1;
me da un error en el split. Alguna idea? se entendió lo que necesito???
  #2 (permalink)  
Antiguo 22/12/2009, 13:03
Avatar de Turdo  
Fecha de Ingreso: julio-2005
Ubicación: .:Guadalajara:.
Mensajes: 398
Antigüedad: 19 años, 3 meses
Puntos: 23
Respuesta: mostrar animaciones según variable

Hola amigo!!

Tienes 2 errores

1.- la variable i ya esta dentro del for asi que no necesitas declararla
2.- el parametro p dentro de la función es numérico, asi que split() no funciona con la clase Number. Tu parametro deberia de ser String pues split() es un metodo de la clase String

Ha! se me olvidaban otros errores: Cuando llamas a la función animar, No pones los parametros adecuadamente, solo debes de poner la variable sin declarar el tipo. Pero la variable debe de ser del mismo tipo
__________________
Un buen programa depende de la imaginación.

Última edición por Turdo; 22/12/2009 a las 13:17 Razón: Nuevo problema
  #3 (permalink)  
Antiguo 22/12/2009, 13:53
Avatar de alealvaro  
Fecha de Ingreso: junio-2004
Ubicación: BA - Argentina
Mensajes: 210
Antigüedad: 20 años, 5 meses
Puntos: 12
Respuesta: mostrar animaciones según variable

Gracias por la respuesta!!!

Estoy corrigiendo lo que me dices, y por lo que veo necesitaría convertir el número a una cadena String para poder usar el split() y acceder digito por digito. Me podrías decir como convierto de Number a String? es facil?
  #4 (permalink)  
Antiguo 22/12/2009, 14:14
Avatar de alealvaro  
Fecha de Ingreso: junio-2004
Ubicación: BA - Argentina
Mensajes: 210
Antigüedad: 20 años, 5 meses
Puntos: 12
Respuesta: mostrar animaciones según variable

Denuevo... he corregido algunas cositas pero quisiera por favor si puedes lo revises... lo que necesito es que el número que ingresa por FlashVars cambie a String, lo pase por split() y según el primer valor muestre la animación...

Código:
var miparametro:Object=LoaderInfo(this.root.loaderInfo).parameters;
function animar(p) {
	var orden:Array=p.split("");
	var q:String=orden[1];
	switch (q) {
		case 1 :
			gotoAndPlay(2);
			break;
		case 2 :
			gotoAndPlay(20);
			break;
		case 3 :
			gotoAndPlay(40);
			break;
		case 4 :
			gotoAndPlay(60);
			break;
		case 5 :
			gotoAndPlay(80);
			break;
	}
}
LoaderInfo(this.root.loaderInfo).parameters;
var laguia:String = miparametro.variable1.toString();
animar(String(laguia));
elnumero.text=miparametro.variable1;
pero siempre se me queda mostrando la animación como si el valor ingresado fuera 1. Donde está mal?

Muchas gracias!!
  #5 (permalink)  
Antiguo 22/12/2009, 19:57
Avatar de Turdo  
Fecha de Ingreso: julio-2005
Ubicación: .:Guadalajara:.
Mensajes: 398
Antigüedad: 19 años, 3 meses
Puntos: 23
Respuesta: mostrar animaciones según variable

Hola de nuevo!!

Veo que cambio bastante tu código, eso es bueno. A hora lo que realmente necesitas, es saber que en flash las variables son algo asi como "multidato" si no las declaras de un tipo especifico, estas pueden ir cambiando de tipo de dato a lo largo del programa, según tu conveniencia.

Entonces esto significa que no necesitas convertir de numero a cadena, pero tampoco quiere decir que este bien; valgame la rebusnancia... perdón la redundancia. Lo que estas haciendo con este código, es que estas comparando los elementos de un arreglo y un arreglo puede tener todo tipo de datos. ¿Y cual es el error? La respuesta es que en el switch estas comparando la variable q que es una cadena y le das el valor de un elemento de un arreglo; en el case pones 1 y no "1". Entonces los tipos de la variable para comparar no son iguales al switch; por lo cual ninguna condición se cumple.

La solución a todo esto es que solo agreges comillas al case y de pasada te doy un tip, si no usas el debugger de flas, utiliza trace(cualquiercosa) para saber que parte del codigo se ejecuta.
Código ActionScript:
Ver original
  1. //supongamos que var laguia:String = miparametro.variable1.toString(); equivale a 24315
  2.  
  3. var miparametro:Object=LoaderInfo(this.root.loaderInfo).parameters;
  4. function animar(p) {
  5.     var orden:Array=p.split("");
  6.     var q:String=orden[1];
  7.     switch (q) {
  8.         case "1" ://<-----------------aquí pongo las comillas
  9.             trace("1");
  10.             gotoAndPlay(2);
  11.             break;
  12.         case "2" :
  13.             trace("2");
  14.             gotoAndPlay(20);
  15.             break;
  16.         case "3" :
  17.             trace("3");
  18.             gotoAndPlay(40);
  19.             break;
  20.         case "4" :
  21.             trace("4");
  22.             gotoAndPlay(60);
  23.             break;
  24.         case "5" :
  25.             trace("5");
  26.             gotoAndPlay(80);
  27.             break;
  28.     }
  29. }
  30. LoaderInfo(this.root.loaderInfo).parameters;
  31. var laguia:String = miparametro.variable1.toString();//<--Aqui tu ya combiertes de number a string
  32. animar(String(laguia));
  33. elnumero.text=miparametro.variable1;
__________________
Un buen programa depende de la imaginación.
  #6 (permalink)  
Antiguo 22/12/2009, 21:21
Avatar de alealvaro  
Fecha de Ingreso: junio-2004
Ubicación: BA - Argentina
Mensajes: 210
Antigüedad: 20 años, 5 meses
Puntos: 12
Respuesta: mostrar animaciones según variable

Hola Idolo!!!! Excelente tu respuesta, ya lo implementé y funciona genial!!!!

Ahora quisiera pedirte ayuda con una modificación... con el código tal cual me lo diste si ingreso por ejemplo: "43152".. como tiene configurado...
Código:
var q:String=orden[1];
Reproduce la animación que corresponde al case "3".

Lo que quiero lograr ahora, es que vaya reproduciendo cada uno de los valores, osea primero el 4, luego el 3, luego el 1, luego el 5 y final el 2.

Se me ocurre, hablando desde mi inexperiencia con as3, en el frame1 declarar
Código:
var i:int = 0;
y todo el código implementarlo en el frame2. Luego por ejemplo: la animación correspondiente al case "1" comienza en el frame 3, termina en el frame20, donde tendría el código...
Código:
i=i+1;
gotoAndPlay(3)
Ya que me imaginaba así incrementaría en 1 el valor de i, y volvería al frame donde está el código, para asi reproducir el case correspondiente al siguiente valor de la variable.

Pero el asunto que lo hice así y no funcionó... me podrías por favor dar una mano??????

Nuevamente mil gracias!!!!
  #7 (permalink)  
Antiguo 23/12/2009, 14:04
Avatar de Turdo  
Fecha de Ingreso: julio-2005
Ubicación: .:Guadalajara:.
Mensajes: 398
Antigüedad: 19 años, 3 meses
Puntos: 23
Respuesta: mostrar animaciones según variable

Hola nuevamente!!

No funciona porque la función no la estas llamando nuevamente. Y es muy fácil hacer lo que quieres sin hacer tanto código solo hay que modificar un poco la función.

Hay que agregar un parámetro a la función y así la extenderemos para darle mas usabilidad.


Código ActionScript:
Ver original
  1. //Declaras i como habias dicho
  2. var i:int = 0;
  3. function animar(p,n) {//<---------agregamos el parámetro n
  4.     var orden:Array=p.split("");
  5.     var q:String=orden[n];//<-----usamos el parámetro n para determinar que
  6. //case se va a usar
  7. ...
  8. ...
  9. }

A hora usaremos la función de la siguiente manera:
esto en el frame 1
animar(String(laguia),i);

Y en cada frame donde inicia la animación llama la función, por ejemplo el frame 2 y el 20..80:
i++;
animar(String(laguia),i);


Bueno espero ayas aprendido a usar las funciones y como llamarlas.
__________________
Un buen programa depende de la imaginación.
  #8 (permalink)  
Antiguo 24/12/2009, 00:55
Avatar de Eskombro  
Fecha de Ingreso: septiembre-2009
Ubicación: Colombia
Mensajes: 437
Antigüedad: 15 años, 2 meses
Puntos: 22
Respuesta: mostrar animaciones según variable

Pues el punto es que los array siempre empiezan en la posición 0. Cuando solicitas orden[1] estás pidiendo el segundo dato del array, no el primero. Ese es el detalle.

un saludo
Eskombro
__________________
Blog AS3 Ideas -> Programación en ActionScript 3
________
Esk Games | Free online flash games
  #9 (permalink)  
Antiguo 27/12/2009, 23:05
Avatar de alealvaro  
Fecha de Ingreso: junio-2004
Ubicación: BA - Argentina
Mensajes: 210
Antigüedad: 20 años, 5 meses
Puntos: 12
Respuesta: mostrar animaciones según variable

Excelente la ayuda!!!! Mil gracias!!!! ya por fin está funcionando wiiiiiii!!!

Ahora una preguntita rapida :)

en los case, necesito modificar los gotoAndPlay, ya que las animaciones no las tengo en la línea de tiempo principal, sino dentro de un MovieClip... el cual se llama "PJ"... como debería poner para que vaya por ej: al frame 20 de la línea de tiempo dentro del MovieClip "PJ"?????

GRacias!!!!!
  #10 (permalink)  
Antiguo 27/12/2009, 23:46
Avatar de Turdo  
Fecha de Ingreso: julio-2005
Ubicación: .:Guadalajara:.
Mensajes: 398
Antigüedad: 19 años, 3 meses
Puntos: 23
Respuesta: mostrar animaciones según variable

_Pj.play(); Esto en AS2 y en AS3
__________________
Un buen programa depende de la imaginación.
  #11 (permalink)  
Antiguo 28/12/2009, 00:26
Avatar de Eskombro  
Fecha de Ingreso: septiembre-2009
Ubicación: Colombia
Mensajes: 437
Antigüedad: 15 años, 2 meses
Puntos: 22
Respuesta: mostrar animaciones según variable

PJ.gotoAndPlay(20);
__________________
Blog AS3 Ideas -> Programación en ActionScript 3
________
Esk Games | Free online flash games
  #12 (permalink)  
Antiguo 28/12/2009, 00:43
Avatar de alealvaro  
Fecha de Ingreso: junio-2004
Ubicación: BA - Argentina
Mensajes: 210
Antigüedad: 20 años, 5 meses
Puntos: 12
Respuesta: mostrar animaciones según variable

Genial!!!!!!... y porfa para llamar una función desde dentro del MovieClip... pero la función está en la línea de tiempo principal??????
  #13 (permalink)  
Antiguo 28/12/2009, 00:46
Avatar de Eskombro  
Fecha de Ingreso: septiembre-2009
Ubicación: Colombia
Mensajes: 437
Antigüedad: 15 años, 2 meses
Puntos: 22
Respuesta: mostrar animaciones según variable

_root.nombredelafuncion(); -> AS2
root.nombredelafuncion(); -> AS3
__________________
Blog AS3 Ideas -> Programación en ActionScript 3
________
Esk Games | Free online flash games
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 23:02.