Comunidad de diseño web y desarrollo en internet online

clip en movimiento: problema con Y

Citar            
MensajeEscrito el 17 Ene 2011 05:19 pm
Buenas tardes:
hace poco que he migrado de AS2 a AS3 y voy un poco perdido con el tema. Es probable que la duda esté ya resuelta en algun foro pero no he sabido encontrarla hasta el momento... pido disculpas ya desde ahora si este es el caso.
Mi duda es muy creo que es muy sencilla per no logro resolverla:
estoy diseñando una actividad sencilla para los niños de mi clase. Creo un clip y lo coloco en el escenario. Lo que pretendo es variar algunas de sus propiedades (x, y, scaleX, scaleY, alpha) mientras se va desplazando de izquierda a derecha para volver a empezar. Lo tengo todo claro excepto el movimiento de Y. Pretendo que el clip suba, llegue hasta 0 y vuelva a generar un movimiento hacia abajo, dando sensación de rebote. He generado unas líneas de código que sí lo hacen pero, no sé porquè, acelera el movimiento de manera exponencial y se descontrola totalmente. El código és el siguiente:

Código ActionScript :

import flash.display.MovieClip;
import flash.events.Event;
import flash.text.engine.EastAsianJustifier;

stop();
//====================================================================================
var clip:MovieClip = new estrella_clip_00();
clip.x = clip.width / 2;
clip.y = stage.stageHeight / 2;
addChild(clip);

//====================================================================================

//====================================================================================
clip.addEventListener(Event.ENTER_FRAME, movimientotX);
clip.addEventListener(Event.ENTER_FRAME, movimientoY);
clip.addEventListener(Event.ENTER_FRAME, rotacion);
clip.addEventListener(Event.ENTER_FRAME, transparencia);
clip.addEventListener(Event.ENTER_FRAME, escalaX);
clip.addEventListener(Event.ENTER_FRAME, escalaY);
//====================================================================================;

//====================================================================================;
var inc00:uint = 2.5;
var inc01:uint = 5;
var inc02:Number = 0.0000001;
var inc03:Number = 0.01;
var limitUP:uint = 0;
var limitDOWN:uint = stage.stageHeight;
//====================================================================================


//====================================================================================
function movimientoX(event:Event):void
{
   clip.x +=  inc00;
   if (clip.x > stage.stageWidth)
   {
      clip.x = 64;
      clip.alpha = 1;
      clip.scaleX = 1;
      clip.scaleY = 1;
   }
}
//====================================================================================

//====================================================================================
function rotacion(event:Event):void
{
   clip.rotation +=  5;
}
//====================================================================================

//====================================================================================
function transparencia(event:Event):void
{
   clip.alpha -=  inc02;
}
//====================================================================================

//====================================================================================
function escalaX(event:Event):void
{
   clip.scaleX +=  inc03;
}
//====================================================================================

//====================================================================================
function escalaY(event:Event):void
{
   clip.scaleY +=  inc03;
}
//====================================================================================

//====================================================================================
function movimientoY(event:Event):void {
clip.y-=inc01;
if (clip.y<limitUP) {
clip.addEventListener(Event.ENTER_FRAME, movimientoY_UP);
function movimientoY_UP(event:Event):void {
clip.y+=inc01;
}
}
if (clip.y>limitDOWN) {
clip.addEventListener(Event.ENTER_FRAME, movimientoY_DOWN);
function movimientoY_DOWN(event:Event):void {
clip.y-=inc01;
}
}
}
//====================================================================================

Estaré muy agradecido si alguien me puede ayudar a tirar adelante esta actividad. ¡Muchas gracias por su atención!

Saludos,
Digid

Por digid

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Ene 2011 05:45 pm
Digit, el problema es que estás añadiendo Listerners sin eliminarlos. Así, cuando llegue a limitUP, creas un nuevo listener. Luego ya tienes DOS, el que llama a moviientoY y el que llama a movimientoY_UP.
tip1: usa un único ENTER_FRAME para TODO -vamos, para y, para x, para rotatation...
tip2: A la hora de controlar la y, usa dos incrementos, uno que valga 5 y otro que valga -5, lo que haces es, en dos if cambiar ese incremento (el if será compuesto)

Código ActionScript :

if (inc01<0 && clip.y<limitUP){
     inc01=5
}
algo parecido para cuando esté bajando

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Ene 2011 09:51 pm
Muchas gracias por tu respuesta! Lo pruebo y te digo, seguro que funciona. Muchas gracias por el cable que echáis alos que vamos más justillos.

Saludos,
Digid

Por digid

15 de clabLevel



 

safari
Citar            
MensajeEscrito el 18 Ene 2011 11:13 am
Ha funcionado a la perfección! Muchísimas gracias!!!

Saludos,
Digid

Por digid

15 de clabLevel



 

firefox

 

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