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

array y tween

Estas en el tema de array y tween en el foro de Flash y Actionscript en Foros del Web. Hola, haber si alguien me puede echar una mano con la clase tween. Tengo dos arrays en las que tengo almacenadas las coordenadas x e ...
  #1 (permalink)  
Antiguo 15/12/2009, 10:55
 
Fecha de Ingreso: diciembre-2007
Mensajes: 140
Antigüedad: 16 años, 4 meses
Puntos: 0
array y tween

Hola,

haber si alguien me puede echar una mano con la clase tween.

Tengo dos arrays en las que tengo almacenadas las coordenadas x e y:

xenSol1[] --> coordenadas x
yenSol1[] --> coordenadas y

tengo un mc con el nombre de instancia "miClip" dentro de otro llamado "grafico1".

Quisiera crear una interpolación con código as, que comience en la x e y de la primera posición del array, recorra el resto de coordenadas almacenadas en la matriz y finalice en la última posición. Y que todo parezca una sóla animación.

No se cual sería la mejor forma de crear este bucle. (De esta forma no me funciona)

for(a=0;a<=xenSol1.length;a++){
var myTw = new Tween(grafico1.miClip, "_x", Regular.easeOut, xenSol1[a], xenSol1[b], 20, true);
var myTw = new Tween(grafico1.miClip, "_y", Regular.easeOut, yenSol1[a], yenSol1[b], 20, true);
}


Gracias a todos y un saludo
  #2 (permalink)  
Antiguo 15/12/2009, 11:59
Avatar de AnisDelMono  
Fecha de Ingreso: febrero-2007
Ubicación: Pas de la Casa
Mensajes: 247
Antigüedad: 17 años, 2 meses
Puntos: 7
Respuesta: array y tween

Hola, no se si te he entendido bien.

A ver: la clase tween, que yo sepa, necesita dos valores _x que definen un principio y un final.

Tu lo muestras asi: xenSol1[a], xenSol1[b]

la a la sacas del bucle pero, donde se declara la b?

No seria mejor: xenSol1[0], xenSol1[1]? Claro que eso seria demasiado simple.

No se si es lo que necesitas, no seria mejor un array bidimensional? Ejemplo:

xenSol1[a][0], xenSol1[a][1]

donde el segundo valor serian los pares de la _x o la _y
__________________
=>=>=>=>=>=>=>=>=>=>=>=>=>
¡Disidente!
Frente Popular de Judea, Life of Brian
  #3 (permalink)  
Antiguo 16/12/2009, 12:35
 
Fecha de Ingreso: diciembre-2007
Mensajes: 140
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: array y tween

Lo primero, gracias por contestar y haber si ahora consigo explicarme mejor ya que me vendría muy bien la ayuda de alguien.
Todo esto es parte de una aplicación más larga y compleja, con esta tween debería de conseguir una curva que represente el movimiento del sol, donde "grafico1.miClip" es el sol. Espero que con estos datos me entiendas porque no consigo que funcione.
A lo largo de la aplicación voy cargando los arrays (como dices, también podría haber sido una bidimensional) con estos datos que se consiguen a traves de unas operaciones matemáticas:

xenSol1[1] --> -56 yenSol1[1] --> 13.0181893890662
xenSol1[2] --> -48 yenSol1[2] --> 32.6722377083751
xenSol1[3] --> -40 yenSol1[3] --> 53.3824909982467
xenSol1[4] --> -32 yenSol1[4] --> 74.5513219644616
xenSol1[5] --> -24 yenSol1[5] --> 95.4649605240455
xenSol1[6] --> -16 yenSol1[6] --> 114.940455554721
xenSol1[7] --> -8 yenSol1[7] --> 130.439847473621
xenSol1[8] --> 0 yenSol1[8] --> 136.878720564237
xenSol1[9] --> 8 yenSol1[9] --> 130.439847473621
xenSol1[10] --> 16 yenSol1[10] --> 114.940455554721
xenSol1[11] --> 24 yenSol1[11] --> 95.4649605240455
xenSol1[12] --> 32 yenSol1[12] --> 74.5513219644616
xenSol1[13] --> 40 yenSol1[13] --> 53.3824909982467
xenSol1[14] --> 48 yenSol1[14] --> 32.6722377083751
xenSol1[15] --> 56 yenSol1[15] --> 13.0181893890662

Una vez que tengo todas las coordenadas x e y en los arrays, creo este CODIGO:

Código:
crearSoles()

function crearSoles(){	
	a=1
	b=2
	comenzarSol()
}
function comenzarSol(){	
	if(a<=xenSol1.length){
		var myTw = new Tween(grafico1.miClip, "_x", Regular.easeOut, xenSol1[a], xenSol1[b], 30, true);
		var myTw = new Tween(grafico1.miClip, "_y", Regular.easeOut, yenSol1[a], yenSol1[b], 30, true);
		myTw.onMotionFinished  = cont()
	}			
}
function cont(){
		a++
		b++	
		comenzarSol()
}
No funciona.

/************************************************
También he probado de esta forma:

Código:
function crearSoles(){	
	a=1
	b=2
	var myTw = new Tween(grafico1.miClip, "_x", Regular.easeOut, xenSol1[a], xenSol1[b], 30, true);
	var myTw = new Tween(grafico1.miClip, "_y", Regular.easeOut, yenSol1[a], yenSol1[b], 30, true);
	comenzarSol()
}

function comenzarSol(){	
		a++
		b++
	if(a<xenSol1.length){
		trace("xenSol1["+a+"] --> "+xenSol1[a]+" yenSol1["+a+"] --> "+yenSol1[a])
		myTw.continueTo(grafico1.miClip, "_x", Regular.easeOut, xenSol1[a], xenSol1[b], 30, true);
		myTw.continueTo(grafico1.miClip, "_y", Regular.easeOut, yenSol1[a], yenSol1[b], 30, true);
		comenzarSol()
	}else{
		a=1
		b=2
	}	
}
En este caso no se si lo esta haciendo bien, cuando lo ejecuto el sol aparece en la última posición, pero no se si lo hace tan rápido que no consigo verlo en ese caso como podría hacer que fuese despacio y que se viese bien todo el movimiento, o si es que va directo a la última posición, en ese caso voy mal.
  #4 (permalink)  
Antiguo 17/12/2009, 05:20
Avatar de AnisDelMono  
Fecha de Ingreso: febrero-2007
Ubicación: Pas de la Casa
Mensajes: 247
Antigüedad: 17 años, 2 meses
Puntos: 7
Respuesta: array y tween

No se que version de as estas trabajando, pero prueba declarando las variables:

Código PHP:
function crearSoles(){    
    var 
a:Number=1
    
var b:Number=2
    comenzarSol
()

Prueba de poner tambien ";" al final de las sentencias. Si el compilador no encuentra ";" lo interpreta. Pero siempre es bueno acabar las sentencias con punto y coma.

hay otra cosa que no me gusta. Declaras dos veces la misma variable. No se si tiene que ver con el problema, pero prueba esto:

Código PHP:
var myTwX = new Tween(grafico1.miClip"_x"Regular.easeOutxenSol1[a], xenSol1[b], 30true);
var 
myTwY = new Tween(grafico1.miClip"_y"Regular.easeOutyenSol1[a], yenSol1[b], 30true);

myTwY.onMotionFinished  cont() 
Y a ver si aclaramos esto otro:

Necesitas unos arrays que te de dos equis. Una para el principio del tween y otra para el final. Lo mismo para las ys

No se como generas esos datos, pero no crees que la estructura seria mejor asi?:

Código PHP:
var xenSol0:Array = new array();
xenSol0 = ["xPrincipio""xFinal"]; 
Se podrian generar mediante un bucle cambiando el numero final (xenSol1, xenSol2, xenSol3).

y en el tween pones lo valores asi:

Código PHP:
var myTw = new Tween(grafico1.miClip"_x"Regular.easeOutxenSol+a[0], xenSol+a[1], 30true); 
Cita:
En este caso no se si lo esta haciendo bien, cuando lo ejecuto el sol aparece en la última posición, pero no se si lo hace tan rápido que no consigo verlo en ese caso como podría hacer que fuese despacio y que se viese bien todo el movimiento, o si es que va directo a la última posición, en ese caso voy mal.
Tal vez seria mejor hacerlo con setInterval:

http://livedocs.adobe.com/flash/9.0_...=00004853.html

repite una funcion cada cierto tiempo
__________________
=>=>=>=>=>=>=>=>=>=>=>=>=>
¡Disidente!
Frente Popular de Judea, Life of Brian
  #5 (permalink)  
Antiguo 17/12/2009, 05:35
Avatar de AnisDelMono  
Fecha de Ingreso: febrero-2007
Ubicación: Pas de la Casa
Mensajes: 247
Antigüedad: 17 años, 2 meses
Puntos: 7
Respuesta: array y tween

No, ahora que lo pienso, setInterval no tiene nada que ver. Ya lo solucionas con onMotionFinished.
__________________
=>=>=>=>=>=>=>=>=>=>=>=>=>
¡Disidente!
Frente Popular de Judea, Life of Brian
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:06.