Puede usar JavaScript para crear una animacion compleja que tenga, entre otros, los siguientes elementos:
-
Fuegos artificiales
-
Efecto de desvanecimiento
-
Roll-in o Roll-out
-
Pagina de entrada o salida de pagina
-
Movimientos de objetos
Este tutorial proporciona una comprension basica de como usar JavaScript para crear una animacion.
JavaScript se puede usar para mover varios elementos DOM (<img/>
, <div>
o cualquier otro elemento HTML) alrededor de la pagina de acuerdo con algun tipo de patron determinado por una ecuacion o funcion logica.
JavaScript proporciona las siguientes funciones para ser utilizadas con frecuencia en programas de animacion.
-
setTimeout(function, duration)
: esta funcion llama afunction
despues deduration
en milisegundos a partir de ahora. -
setInterval(funcion, duracion)
: esta funcion llama afunction
despues de cadaduration
en milisegundos. -
clearTimeout(setTimeout_variable)
: esta funcion llama a cualquier temporizador establecido por las funcionessetTimeout()
.
JavaScript tambien puede establecer una serie de atributos de un objeto DOM, incluida su posicion en la pantalla. Puede establecer el atributo superior e izquierdo de un objeto para colocarlo en cualquier lugar de la pantalla. Aqui esta su sintaxis.
// Set distance from left edge of the screen.
object.style.left = distance in pixels or points;
or
// Set distance from top edge of the screen.
object.style.top = distance in pixels or points;
Animacion manual
Implementemos una animacion simple usando propiedades del objeto DOM y funciones JavaScript de la siguiente manera. La siguiente lista contiene diferentes metodos DOM.
-
Estamos utilizando la funcion de JavaScript
getElementById()
para obtener un objeto DOM y luego asignarlo a una variable globalimgObj
. -
Hemos definido una funcion de inicializacion
init()
para inicializarimgObj
donde hemos establecido sus atributosposition
yleft
. -
Estamos llamando a la funcion de inicializacion en el momento de la carga de la ventana.
-
Finalmente, estamos llamando a la funcion
moveRight()
para aumentar la distancia izquierda en 10 pixeles. Tambien puede establecerlo en un valor negativo para moverlo hacia el lado izquierdo.
Ejemplo
Prueba el siguiente ejemplo.
<html>
<head>
<title>JavaScript Animation</title>
<script type = "text/javascript">
<!--
var imgObj = null;
function init() {
imgObj = document.getElementById('myImage');
imgObj.style.position= 'relative';
imgObj.style.left = '0px';
}
function moveRight() {
imgObj.style.left = parseInt(imgObj.style.left) + 10 + 'px';
}
window.onload = init;
//-->
</script>
</head>
<body>
<form>
<img id = "myImage" src = "/images/html.gif" />
<p>Click button below to move the image to right</p>
<input type = "button" value = "Click Me" onclick = "moveRight();" />
</form>
</body>
</html>
Animacion automatizada
En el ejemplo anterior, vimos como una imagen se mueve hacia la derecha con cada clic. Podemos automatizar este proceso utilizando la funcion de JavaScript setTimeout()
de la siguiente manera:
Aqui hemos agregado mas metodos. Asi que veamos que hay de nuevo aqui:
-
La funcion
moveRight()
esta llamando a la funcionsetTimeout()
para establecer la posicion deimgObj
. -
Hemos agregado una nueva funcion
stop()
para borrar el temporizador establecido por la funcionsetTimeout()
y para llevar el objeto en su posicion inicial.
Ejemplo
Pruebe el siguiente codigo de ejemplo.
<html>
<head>
<title>JavaScript Animation</title>
<script type = "text/javascript">
<!--
var imgObj = null;
var animate ;
function init() {
imgObj = document.getElementById('myImage');
imgObj.style.position= 'relative';
imgObj.style.left = '0px';
}
function moveRight() {
imgObj.style.left = parseInt(imgObj.style.left) + 10 + 'px';
animate = setTimeout(moveRight,20); // call moveRight in 20msec
}
function stop() {
clearTimeout(animate);
imgObj.style.left = '0px';
}
window.onload = init;
//-->
</script>
</head>
<body>
<form>
<img id = "myImage" src = "/images/html.gif" />
<p>Click the buttons below to handle animation</p>
<input type = "button" value = "Start" onclick = "moveRight();" />
<input type = "button" value = "Stop" onclick = "stop();" />
</form>
</body>
</html>
Rollover con un evento de mouse
Aqui hay un ejemplo simple que muestra la renovacion de imagen con un evento de mouse.
Veamos que estamos usando en el siguiente ejemplo:
-
En el momento de cargar esta pagina, la instruccion
if
verifica la existencia del objetoimage
. Si el objetoimage
no esta disponible, este bloque no se ejecutara. -
El constructor
Image()
crea y precarga un nuevo objetoimage
llamadoimage1
. -
A la propiedad src se le asigna el nombre del archivo imagen externo llamado
/images/html.gif
. -
Del mismo modo, hemos creado el objeto
image2
y asignado/images/http.gif
. -
El
#
(marca hash) deshabilita el enlace para que el navegador no intente ir a una URL cuando se hace clic. Este enlace es una imagen. -
El controlador de eventos
onMouseOver
se activa cuando el mouse del usuario se mueve hacia el enlace, y el controlador de eventosonMouseOut
se activa cuando el mouse del usuario se aleja del enlace (image
). -
Cuando el mouse se mueve sobre
image
, la imagen HTTP cambia de la primera imagen a la segunda. Cuando el mouse se aleja de la imagen, se muestra la imagen original. -
Cuando el mouse se aleja del enlace, la imagen inicial
html.gif
volvera a aparecer en la pantalla.
<html>
<head>
<title>Rollover with a Mouse Events</title>
<script type = "text/javascript">
<!--
if(document.images) {
var image1 = new Image(); // Preload an image
image1.src = "/images/html.gif";
var image2 = new Image(); // Preload second image
image2.src = "/images/http.gif";
}
//-->
</script>
</head>
<body>
<p>Move your mouse over the image to see the result</p>
<a href = "#" onMouseOver = "document.myImage.src = image2.src;"
onMouseOut = "document.myImage.src = image1.src;">
<img name = "myImage" src = "/images/html.gif" />
</a>
</body>
</html>
Contacto
- Envia tus comentarios al correo
henrytorrespo@yahoo.com