Comunidad de diseño web y desarrollo en internet online

Ayuda Animar con AS3

Citar            
MensajeEscrito el 30 Ene 2010 02:16 am
Hola!!!

quisiera que me ayudaran a darle a un movieclip un movimiento continuo de arriba a abajo, todo esto en una clase

por el momento tengo esto, pero no se mueve como quiero:

Código ActionScript :

package clases {
   
   import flash.display.MovieClip;
   
   
   public class Mar extends MovieClip {
      
      import flash.events.*;
      
      public function Mar():void {
         
      addEventListener(Event.ENTER_FRAME,mover);
      
   }
   
   private function mover(e:Event) {
      

         x+=1;

         if (x > 50) {

            x = 0;

         }

Gracias

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Ene 2010 02:16 pm
Llega a 50 y vuelve ... ,cambia x por y para que se mueva verticalmente

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 30 Ene 2010 10:13 pm
pues si ....

pero no se como hacerlo, quiero que el movimiento sea fluido

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 31 Ene 2010 06:19 pm
ayuda por favor !

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 31 Ene 2010 06:54 pm
tal y como te dijo Jorge solo cambia :

Código ActionScript :

private function mover(e:Event) 
{  
   y+=1;  
   if(y > stage.stageHeight) { 
      // do something 
   } else if(y < 0) { 
      // do something 
   } 
}


su quieres movimientos mas suaves debes usar unas formulas , en la que impliquen spring , friction..etc , o usa la clase Tween de flash aunque yo te recomiendo el engine de TweenMax

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 31 Ene 2010 07:15 pm
bien, pero como hago para que se devuelva?
seria: arriba - abajo - arriba - abajo, infinitamente

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 31 Ene 2010 08:25 pm
mmm eso es de lo primero que debes de aprender como flash interpreta los ejes X,Y, a diferencia del plano cartesiano que comunmente usamos en la escuela, los cuadratantes superiores son positivos, en flash esos cuadrantes estan invertidos ,vamos que si aumentas en Y disminuye la posicion vertical de un objeto en Flash y viceversa , teniendo eso en cuenta debes evaluar el limite es decir una restriccion de coordenadas , por ejemplo si quieres que tu objeto al revasar lo que mide el alto de tu escena
y regrese a la posicion 0 en y deberia ser asi:

Código ActionScript :

package
{
   import flash.display.MovieClip;
   import flash.events.Event;
   
   public class Mar extends MovieClip
   {
      private var _vy:Number = 0;
      private var _limiteY:Number;
      
      public function Mar(vy:Number, limiteY:Number)
      {
         _vy = vy;
         _limiteY = limiteY;
         addEventListener(Event.ENTER_FRAME,handleEnterFrame);
      }
      
      private function handleEnterFrame(e:Event):void
      {
         this.y += _vy;
         if(this.y > _limiteY)
         {
            this.y = 0 - this.height;
         }
      }
   }
}


y lo usas en una clase main o el frame 1 de tu stage :

Código ActionScript :

var mar:Mar = new Mar(5,stage.stageHeight);
addChild(mar);


la clase ahora recibe 2 argumentos que son la velocidad en [Y] , que quieres que incremente , y el limite en [Y,] este caso le digo que el limite sea el alto de stage, checa el condicional "si el valor de la propiedad Y es mayor que el limite , entonces resetamos el valor a 0 y le restamos el alto del objeto , esto se debe a que si dejaramos 0 el objeto apareceria de golpe en el (0,0) es por eso que se resta lo que mide el alto del objeto, para que el efecto paresca que biene de una pocision mas arriba en el ejeY...bueno creo que eso es todo.

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 31 Ene 2010 09:00 pm
pues me no anima y me da esto en la salida:

ArgumentError: Error #1063: Discordancia del recuento de argumentos en clases::Mar(). Se esperaba 2 y se obtuvo 0.

que podra ser?

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 31 Ene 2010 09:07 pm
te puse el codigo de como vas a crear la instancia, ese error significa que no le estas pasando los 2 parametros, que requiere que son la velocidad en Y, y el limite.

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 31 Ene 2010 09:14 pm
oye que pena la ignorancia, cambiarme a as3 me esta dando duro.

no se que debo hacer exactamente para que no me de ese error.

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 31 Ene 2010 09:30 pm
mmm supongo que esa clase es un MovieClip en tu libreria exportado para AS3 , y despues lee este otro que explica el movimiento lineal , que es lo que ocupas.

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 31 Ene 2010 10:04 pm
Muchas Gracias por tu ayuda jn_Flash !!!

al fin lo logre del siguiente modo:

package clases{

import flash.display.MovieClip;
import flash.events.Event;

public class Mar extends MovieClip {
private var yvel:int=1;

public function Mar(){
addEventListener(Event.ENTER_FRAME,mover);
}

private function mover(event:Event):void {
if(y+yvel>600 || y+yvel<580){
yvel=-yvel;
}
y+=yvel;
}
}
}

aunque me queda una duda:
que significan los || ??

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 31 Ene 2010 10:06 pm
otra pregunta:

¿Como hago si guiero una velocidad inferior a 1?

ya que no acepta decimales

gracias

Por dianita666

Claber

185 de clabLevel



 

firefox
Citar            
MensajeEscrito el 31 Ene 2010 10:12 pm
por partes , el || es el operador OR , esto lo que hace es que se cumpla cualquiera de las 2 condiciones que tienes , vamos como se puede cumplir que el valor de y sea mayor que 600 o bien se puede cumplir que sea menor que 580. Ahora lo otro la variable yVel le estas indiciando que sea del tipo int , int solo acepta numero positivos y redondos , si quieres que sea un valor inferior a 1 o con decimal usa uint o Number :

Código ActionScript :

private var yVel:Number = 0.5; // o bien yVel:uint


Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox

 

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