Tema: movimiento
Ver Mensaje Individual
  #4 (permalink)  
Antiguo 04/03/2003, 02:12
Avatar de axa
axa
 
Fecha de Ingreso: enero-2002
Mensajes: 396
Antigüedad: 22 años, 3 meses
Puntos: 0
Con gusto...
Sabes que depende del frame rate de la pelicula cada vez que pasa un frame se renderiza la imagen en la pantalla...

Ahora... hay eventos de clip que se ejecutan inmediatemente, como onMouseDown(), onMouseUp(), onKeyUp(), etc...

Para asegurarte de que el cambio que haces en la imagen se vea, debes usar la funcion updateAfterEvent(), que lo que hace es refrescar la imagen de la pantalla en el momento que es llamada.

Para verlo mejor has lo siguiente.

(voy a explicarlo paso por paso para los que no saben bien)

Crea una nueva pelicula y le asignas 1 frame por segundo (Frame Rate = 1 fps) en la velocidad.
Crea un mc (una pelotica) y la pones en el stage, le asignas un nombre de instancia ("pelotica" podria ser).

Agregas estas acciones en el primer frame:

pelotica.onMouseDown = function() {
this._x += 10;
}

Prueba la pelicula... y le presionas el boton lo mas rapido que puedas... te das cuenta que se registran las pulsaciones pero solo se actualiza la imagen una vez por segundo, es decir, si le diste 4 veces en un segundo no vas a ver como se mueve "pelotica" 10 pixels cada vez, sino una sola vez se mueve 40 pixels.

Ahora solo pon esto en el boton:

pelotica.onMouseDown = function() {
this._x +=10;
updateAfterEvent();
}

y veras que independientemente del frame rate de la pelicula vas a ver los cambios una vez que se producen.

Se debe usar updateAfterEvent() para eventos de clip como:
onMouseUp();
onMouseDown();
onMouseMove();
onKeyDown();
onKeyUp();
y en la funcion
setInterval();

ya que se ejecutan independientemente del frame rate.

Para los eventos de boton no es necesario porque flash actualiza la imagen automaticamente cada vez que se produce.
__________________
axa