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

mover con aceleración un mc a través de un botón con as

Estas en el tema de mover con aceleración un mc a través de un botón con as en el foro de Flash y Actionscript en Foros del Web. hola a todos, me gustaría poder mover un mc que está situado en una posición x en el escenario hacia otra posición x con efecto ...
  #1 (permalink)  
Antiguo 21/01/2005, 11:14
 
Fecha de Ingreso: diciembre-2002
Mensajes: 102
Antigüedad: 21 años, 3 meses
Puntos: 0
mover con aceleración un mc a través de un botón con as

hola a todos,
me gustaría poder mover un mc que está situado en una posición x en el escenario hacia otra posición x con efecto de aceleración, pero que la orden la de un botón, y no el propio mc.
ya sé que este topic has salido varias veces, pero con los qu he encontrado, no consigo hacer que el botón le de la orden de moverse al mc, sino que la función sólo me va cuando está aplicada al propio mc.
muchas gracias de antemano
  #2 (permalink)  
Antiguo 21/01/2005, 11:54
Avatar de Mahalo  
Fecha de Ingreso: julio-2004
Ubicación: Mallorca (Illes Balears)
Mensajes: 1.121
Antigüedad: 19 años, 8 meses
Puntos: 12
Hola. A ver si esto te sirve. En el panel de acciones de botón:
Código:
on (press){
   a=0; //Al principio la aceleración es 0.
   onEnterFrame=function(){
      mc._x+=a;
      a+=0.2; //0'2 es el valor de incremento de la aceleración.
   }
}
on (release) {
   delete onEnterFrame;
}
El 0'2 lo cambias a tu gusto. Con este código el movmiento se produce mientras mantienes pulsado el botón.
Un saludo.
  #3 (permalink)  
Antiguo 21/01/2005, 12:02
Avatar de rod524  
Fecha de Ingreso: agosto-2004
Mensajes: 517
Antigüedad: 19 años, 7 meses
Puntos: 0
Aquí un link al sitio de Peter Joel, que ha desarrollado muy buenas ecuaciones para diferentes tipos de movimiento en AS, aceleración, desaceleración y otros efectos interesantes:

http://www.peterjoel.com

Saludos.
  #4 (permalink)  
Antiguo 21/01/2005, 12:58
 
Fecha de Ingreso: diciembre-2002
Mensajes: 102
Antigüedad: 21 años, 3 meses
Puntos: 0
gracias, mahalo, pero no me funciona. de todos modos, lo que yo quiero hacer es:
tengo un clip de película en el escenario. nombro la instancia 'mc'. éste quiero que se mueva de un punto 'invisible' al centro del escenario y que tenga una pequeña decelarción a llegar. quien controla este movimiento será un botón que está alojado en otro clip de pelicula q se encuentra en el escenario.
eso es todo.
se te ocurre como solucionarlo
muchas gracias
  #5 (permalink)  
Antiguo 21/01/2005, 13:05
Avatar de Mahalo  
Fecha de Ingreso: julio-2004
Ubicación: Mallorca (Illes Balears)
Mensajes: 1.121
Antigüedad: 19 años, 8 meses
Puntos: 12
Ah, vale, lo que quieres es que decelere al llegar.
Prueba esto:
Código:
on (release) {
   a=5;//5 es la velocidad con la que arranca
   onEnterFrame=function() {
      _root.mc._x+=a;
      if (_root.mc._x>200) {//200 es la posición x en la que empieza a frenar
         a-=0.2;
      }
      if (a<0) {
         a=0;
         delete onEnterFrame;
      }
   }
}
A ver si te funciona éste. Un saludo.
  #6 (permalink)  
Antiguo 21/01/2005, 13:47
 
Fecha de Ingreso: diciembre-2002
Mensajes: 102
Antigüedad: 21 años, 3 meses
Puntos: 0
tío, perdona que te de el coñazo,
ahora he podido comprobar que sí que funciona cuando le doy al botón, pero va hacia la derecha, y me interesa que el mc en cuestión salga de la derecha hacia la izda. cómo especifico la posición x de inicio y de final de recorrido? y me interesa q una vez llegue a la posicion final no siga avanzando aunque pulses el botón.
muchas gracias de nuevo!!!
  #7 (permalink)  
Antiguo 21/01/2005, 15:11
Avatar de Mahalo  
Fecha de Ingreso: julio-2004
Ubicación: Mallorca (Illes Balears)
Mensajes: 1.121
Antigüedad: 19 años, 8 meses
Puntos: 12
Hola.
Pues selecciones el mc en la escena principal, abres el panel de acciones e insertas el código:
Código:
onClipEvent (load) {
   this._x=400;//400 es la posición incial
   _root.mc_boton.a=5;
}
mc_boton es el nombre de instancia donde está el botón.
Luego, en el botón cambias el código que te di antes por:
Código:
on (release) {
   onEnterFrame = function() {
      _root.mc._x-=a;
      if (_root.mc._x<200) {
         a-=0.2;
      }
      if (a<0) {
         a=0;
         delete onEnterFrame;
      }
   }
}
En la posición x=200 empieza a frenar, y se detiene en la posición x=135. Desde que empieza a frenar, va 0.2 más lento, hasta alcanzar el cero (parado). 5, 4'8, 4'6,..., 0. Con mi ejemplo, se para en 135. Tú haz tus cálculos para controlar tus resultados.
Un saludo.
  #8 (permalink)  
Antiguo 21/01/2005, 22:49
Avatar de Prince  
Fecha de Ingreso: mayo-2003
Ubicación: DF
Mensajes: 574
Antigüedad: 20 años, 10 meses
Puntos: 1
Ok, ok, no se compliquen la vida!!!

Hace poco puse un post de algo relacionado con esto que es la nueva clase "transition" que se le agregó a Flash MX 2004.

Con esta clase se pueden hacer todo tipo de movimiento de aceleración, desaceleración, tweening, y todas esas cosas.

Hay un tutorial y ejemplos sencillos aquí:
http://www.forosdelweb.com/o.php?htt...ed/index.shtml

Espero que les sirva de nuevo.
En verdad échenle un vistazo.
__________________
- P R I N C E -
  #9 (permalink)  
Antiguo 06/02/2005, 08:48
Avatar de HectorV  
Fecha de Ingreso: febrero-2004
Mensajes: 173
Antigüedad: 20 años, 1 mes
Puntos: 1
Hola Prince:
Mira, Yo segui al pie de la letra dicho ejemplo, y no funciona. (Es dificil equivocarse segun la simplicidad de las explicaciones)

Nombrar al mc "ball_mc"
Nombrar al boton "myButton_btn"
En el primer y unico frame de la linea de tiempo, el siguiente codigo:

myButton_btn.onRelease = function() {
tweenBall(mx.transitions.easing.Bounce.easeOut);
};
{ ballTween = new mx.transitions.Tween(ball_mc, "_x", mx.transitions.easing.Bounce.easeOut, 20, 380, .5, true);
} // End of the function

function tweenBall() {
easeType = mx.transitions.easing.Bounce.easeOut;
var begin = 20;
var end = 380;
var time = .5;
var mc = ball_mc;
ballTween = new mx.transitions.Tween(mc, "_x", easeType, begin, end, time, true);
}

Mi MC Tween se mueve tanto como la Momia Blanca.... Tambien estuve desmenuzando el ejemplo nº 1 con el "Sothink SWF" y veo que tiene 4 sprites mas con acciones, pero no los nombra en su ejemplo.

Cualquier comentario sobre cual es mi error -supongo- eternamente agradecido.

HectorV
  #10 (permalink)  
Antiguo 06/02/2005, 21:15
Avatar de Prince  
Fecha de Ingreso: mayo-2003
Ubicación: DF
Mensajes: 574
Antigüedad: 20 años, 10 meses
Puntos: 1
Bueno te he de decir que no necesita más acciones que las del ejemplo.
yo tengo un código así:
Código:
var temp = new mx.transitions.Tween(circulo, "_x", mx.transitions.easing.Strong.easeOut, marco._x, marco._x + marco._width - circulo._width, 1, true);
y funciona perfectamente.
Y es el único código que tengo en una película.

Sería cuestión de eliminar tu variable "easeType" y poner directamente en mx.transitions.Tween... el tipo de transición que quieres.
__________________
- P R I N C E -
  #11 (permalink)  
Antiguo 07/02/2005, 02:33
Avatar de pulento  
Fecha de Ingreso: noviembre-2002
Ubicación: En un pequeño, helado, obscuro reino... llamado Dinamarca.
Mensajes: 1.852
Antigüedad: 21 años, 4 meses
Puntos: 1
Para responder a la pregunta de mooguel k inicio el post....


En el primer frame de tu peli.
code-->



MovieClip.prototype.muevetecojones = function(finalValue){
this.onEnterFrame = function(){
this._x += (finalValue - this._x)/4;
}//function
}//muevetecojones


En tu boton
code-->



on(press){
_root.elMcAmover.muevetecojones(Math.round(Stage.w idth/2));
}


Salu2
__________________
http://www.flotdesign.dk/
  #12 (permalink)  
Antiguo 07/02/2005, 10:16
Avatar de HectorV  
Fecha de Ingreso: febrero-2004
Mensajes: 173
Antigüedad: 20 años, 1 mes
Puntos: 1
Prince: El codigo sirve en Flash MX 2004 y no en el Flash 6.
Otro tema. Puedo ver el efecto en el 2004, pero cuando lo veo en el proyector, no funciona.
Pense que la compu me actualizó el proyector Flash Player 7, pero me sigue apareciendo en Player 6.....

Ergo, no puedo verlo en el proyector, solo sobre el .fla.
Gracias cualquier sugerencia.

HectorV
  #13 (permalink)  
Antiguo 07/02/2005, 10:21
Avatar de HectorV  
Fecha de Ingreso: febrero-2004
Mensajes: 173
Antigüedad: 20 años, 1 mes
Puntos: 1
Prince: El codigo sirve en Flash MX 2004 y no en el Flash 6.
Otro tema. Puedo ver el efecto en el 2004, pero cuando lo veo en el proyector, no funciona.
Pense que la compu me actualizó el proyector Flash Player 7, pero me sigue apareciendo en Player 6.....

tengo queabrir manualmente el Flash Player 7, indicarle donde esta el swf que me interesa y recien abrirlo

Ergo, no puedo verlo en el proyector, solo sobre el .fla.
Gracias cualquier sugerencia.

HectorV
  #14 (permalink)  
Antiguo 08/02/2005, 09:36
Avatar de HectorV  
Fecha de Ingreso: febrero-2004
Mensajes: 173
Antigüedad: 20 años, 1 mes
Puntos: 1
De acuerdo Lo logre y gracias a todos

Sumando los comentarios de Prince, Goc00 y otros + el ejemplo de ActionOrg -Tema Tween_ obtuve los siguientes resultados, con un solo frame de inicio.
Tengamos en cuenta que no tengo nociones de programacion, y solo utilice los consejos de los antes mencionados mas la logica comun de Regla de 3 simple. "Si 2 = 30, 4 = X"

1) Logre que un boton desplazara 3 MC en los lugares _x _y deseados.

2) Logre eliminar el boton y que cada MC funcionara como boton, pero siempre desplazando a un punto unico fijo.

3) Logre Que cada Boton MC fuera independiente y dirija la independencia de los otros 2. dominando _x _y con efecto Tween.

Boton 1 = desplaza a Puntos_A Botones 1, 2, 3.
(bot1: _x _y , Bot2: otro _x _y , Bot3: OtroMas _x _Y)

Boton 2 = desplaza a Puntos_B Botones 1, 2, 3.
(Idem )

Boton 3 = desplaza a Puntos_C Botones 1, 2, 3.
(Idem)

No se si fuí claro con respecto a la indepencia y efecto logrado. pero arme lo que queria y no encontraba con exactitud en el foro.

Ahora, dudas en voz alta:
¿Fué necesario las 147 lineas de codigo para lograr dicho efecto, o existen formas mas simples? Porque mi operacion fué mas "ingenieria social" ya que no pude superar mi ignorancia en programacion.
Obviamente siempre se aprende, pero en el caso de action, nunca encontre un Metodo para empezar de Cero.

Ultima pregunta: ¿se puede suprimir "manualmente" la posicion de unboton, con un codigo tipo " if " -si el boton A esta aqui, los otros botones estaran en "otra posicion", sin tener que escribir la posicion manualmente ? Claro que avanzamos bastante ya que no haremos por interpolacion lo que logramos por
codigo, pero aun se que se puede mejorar.

Por ultimo, -si les interesa y como humilde aporte a este foro- mi inquietud en este tema logrado, nacio visitando "http://www.ozarkhenry.com". me parecio mas piola investigar sobre como se hace que preguntar directamente sobre este site.

Un abrazo y gracias como siempre.
HectorV
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 08:34.