Comunidad de diseño web y desarrollo en internet online

2 movimientos seguidos de un mismo objeto ¿xq no funcionan?

Citar            
MensajeEscrito el 22 Abr 2009 02:37 pm
Wenas!!
Estoy intentando hacer una secuencia de movimientos de un mismo objeto, con la sorpresa de que un solo movimiento me funciona, pero si seguidamente hago otro, únicamente, me representa este último.

El código es el siguiente:

Código :

<mx:Move id="cirMove" target="{cir2}" duration="2000"/>

<mx:Script>
<![CDATA[

[Bindable]
private var cir2:Circulo = new Circulo();

private function barraMovHandler(event:ItemClickEvent):void{
 if(event.label == "Play"){
    cir2.x = 100;
    cir2.y = 100;
    cancha.addChild(cir2);
                 
    moverJugador(300, 200);
    moverJugador(150, 10);
 }
}

public function moverJugador(coordX:int, coordY:int):void{
   cirMove.end();
   cirMove.xTo = coordX;
   cirMove.yTo = coordY;
   cirMove.play();
}

]]>
</mx:Script>


Alguien sabe xq ocurre esto y cómo podría solucionarlo???
Me stoy volviendo un poco loca pq no le encuentro lógica....
Muchas gracias de antemano.

Salu2!!

Por Kárites

25 de clabLevel



 

msie7
Citar            
MensajeEscrito el 22 Abr 2009 02:59 pm
Hola proba coneste codigo

Código ActionScript :

<mx:Sequence id="cirMove" target="{cir2}">
      <mx:Move xTo="300" yTo="200" duration="2000"/> />
      <mx:Move xTo="150" yTo="100" duration="2000"/> />
   </mx:Sequence>

<mx:Script>
<![CDATA[

[Bindable]
private var cir2:Circulo = new Circulo();

private function barraMovHandler(event:ItemClickEvent):void{
 if(event.label == "Play"){
    cir2.x = 100;
    cir2.y = 100;
    cancha.addChild(cir2);
                 
    cirMove.play()
 }
}
]]>
</mx:Script>


Espero q te sirva

Saludos!

Por alfathenus

833 de clabLevel

5 tutoriales

 

buenos aires || Argentina

firefox
Citar            
MensajeEscrito el 22 Abr 2009 03:21 pm
Muchas gracias!!
Así si que funciona, lo único q tengo q investigar ahora es como generar esa secuencia, pq las coordenadas q puse en el codigo las puse en modo de ejemplo para q se entendiese más facilmente. El proyecto en sí, consistiria en cargar las coordenadas de un archivo XML (ya lo tengo hecho) y realizar todos los movimientos que aparecen en el archivo, por lo que tendría q ser algo dinámico y que pudiese cambiar.

Me ha servido de ayuda, gracias!! no había caido en lo de <mx:Sequence>
seguire investigando...

Un saludo!!

Por Kárites

25 de clabLevel



 

msie7
Citar            
MensajeEscrito el 22 Abr 2009 03:48 pm
Bueno, creo que conseguido está. Quedaría una cosa como esta:

Código :

<mx:Sequence id="cirMove" target="{cir2}">
      <mx:Move id="mov1" duration="2000"/>
      <mx:Move id="mov2" duration="2000"/>
</mx:Sequence>


<mx:Script>
<![CDATA[

private function barraMovHandler(event:ItemClickEvent):void{
   if(event.label == "Play"){
              cir2.x = 100;
              cir2.y = 100;
                 
                 
              cancha.addChild(cir2);
                 
              mov1.xTo = 400;
              mov1.yTo = 100;
              mov2.xTo = 250;
              mov2.yTo = 300;
              cirMove.play();

     }
}

]]>
</mx:Script>


Gracias x tu ayuda!
Saludosssss

Por Kárites

25 de clabLevel



 

msie7
Citar            
MensajeEscrito el 22 Abr 2009 04:01 pm
Sip... o podes bindearlas y listo... talvez sea mas sencillo ;)

Saludos!

Por alfathenus

833 de clabLevel

5 tutoriales

 

buenos aires || Argentina

firefox
Citar            
MensajeEscrito el 23 Abr 2009 03:52 pm
Con lo de binderarlas a que te refieres?? Llevo pokito con flex, si me pudieses poner un ejemplo o explikarme brevemente te lo agradeceria, pq si dices q es mas facil pues oye...

Graciasss!

Por Kárites

25 de clabLevel



 

msie7
Citar            
MensajeEscrito el 23 Abr 2009 05:51 pm
Hola

Si, aca te pongo un ejemplo

Código ActionScript :

<mx:Sequence id="cirMove" target="{cir2}">
      <mx:Move id="mov1" xTo="{x1}" yTo="{y1}" duration="2000"/>
      <mx:Move id="mov2" xTo="{x2}" yTo="{y2}" duration="2000"/>
</mx:Sequence>


<mx:Script>
<![CDATA[
[Bindable]
private var x1:Number;
[Bindable]
private var x2:Number;
[Bindable]
private var y1:Number;
[Bindable]
private var y2:Number;

private function barraMovHandler(event:ItemClickEvent):void{
   if(event.label == "Play"){
              cir2.x = 100;
              cir2.y = 100;
                 
                 
              cancha.addChild(cir2);
                 
              x1 = 400;
              y1 = 100;
              x2 = 250;
              y2 = 300;
              cirMove.play();

     }
}

]]>
</mx:Script>


Igual es otra forma de hacer lo mismo q vos hiciste, ninguna de las dos formas para este caso presenta una ventaja sustancial...

Saludos!

Por alfathenus

833 de clabLevel

5 tutoriales

 

buenos aires || Argentina

firefox
Citar            
MensajeEscrito el 24 Abr 2009 02:34 pm
Ok! gracias!
Lo de [bindable] entiendo q es para q coja el valor de la variable en el momento de ejecucion de la funcion play().
He encontrado una manera para hacerlo con código, asi le puedo ir aplicando un bucle for() para recorrer los datos q cargo del archivo y hacerlo todo de manera automatica, pq sino, d las formas q hemos puesto mas arriba era muy pesado y demasiado manual.

Lo que hago es crear una funcion que vaya agregando un movimiento mas a una secuencia, asi con cada coordenada del archivo q obtengo llamo a la funcion y me crea el movimiento automaticamente.

Código :

public var secuencia:Sequence = new Sequence();

secuencia.target = cir2;

public function añadirMov(coordX:int, coordY:int):void{
   var mov:Move = new Move();
         
   mov.duration = 2000;
   mov.xTo = coordX;
   mov.yTo = coordY;
         
   secuencia.addChild(mov);
}



Lo dejo aqui x si algun dia le sirve a alguien de algo..

Un sauldo!!

Por Kárites

25 de clabLevel



 

msie7

 

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