Cargar imágenes aleatoriamente
VictorR 9 noviembre, 2005
Etiquetas: ActionScript, Flash
Un efecto bonito y sencillo es el de cargar aleatoriamente una imagen en un banner cada vez que se accede a una página web. Eso es exactamente lo que he hecho en la cabecera de este mismo site.
La manera como lo he implementado es rápida y sencilla. Seguro que hay otras opciones muy válidas y más elegantes, por ejemplo utilizando el Math.random(), pero he decidido “innovar” y utilizar la clase Date. Ahora os enseño cómo.
Lo primero que debemos hacer es “montar el escenario”. En nuestra película debemos crear un nuevo MovieClip, que llamaremos “images”. Dentro de este MovieClip creamos dos layers, “actions” y “photos”. Ahora, en el primer frame del layer “actions” insertamos el siguiente código.
var date:Date = new Date();
var frame:Number = (date.getSeconds() % numberOfFrames) + 1;
this.gotoAndStop(frame);
Vayamos a comentar el código.
En la primera línea de código cogemos el número de frames totales que tendrá nuestro MovieClip “images”, que coincide con el número de fotos que se podrán ver y cargar de forma aleatoria. ¿Por qué coinciden? Porque en el layer “photos” debemos colorar una foto por frame, sobretodo para no sobreponer las imágenes entre sí y se tapen, lógico no?
Esta línea es más importante de lo que parece. Alguien puede sugerir poner el número de fotos harcodeado directamente, pero ¿qué pasará si queremos añadir o quitar fotos? Que si queremos mostrar todas las fotos o que no dé error deberemos modificar manualmente el número introducido. De esta manera, con la sentencia “this._totalframes”, este mantenimiento no es necesario, ya que es automático.
Las siguientes dos sentencias son para saber a qué frame desplazaremos el cursor del tiempo del MovieClip “images”. A partir de la hora de carga del MC, y teniendo en cuenta los segundos, conseguimos decidir a qué frame o qué foto cargar mediante el módulo de los segundos con el número de fotos (%).
Un ejemplo, si se carga la película a las 8:30:01 horas, estas sentencias determinarán que el módulo de 1 (1 segundo) con respecto a 7 (si tuviéramos 7 fotos) es 1, con lo que cargaríamos la foto que se encuentra en el frame 2 (le tenemos que sumar 1 debido a que los frames de flash se indexan a partir de 1, y por lo tanto, cuando el resultado sea 0 deberemos cargar el frame 1). ¿Entendido? Espero que sí porque tengo la sensación de explicarme un poco mal.
Finalmente, la cuarta sentencia simplemente coloca el cursor del tiempo en el frame resultante.
Pues eso es todo, sencillo aunque por la parrafada no lo parezca. Ahora a desvariar un poco más y mejorar la idea inicial para que, por ejemplo, no cargue dos veces seguidas la misma foto o frame. Pero eso lo dejaré para otro artículo, ahora voy a investigar cómo hacerlo
5 comentarios a "Cargar imágenes aleatoriamente" »
ahi ahi! ya empezamos con los articulos, que no pare!
voy a leerme bien el articulo q ayer ya viste q no acabe de entender el codigo.. a ver si m empapo un poco
Hola Jaume!
Si! que no pare!
Para eso hemos iniciado este blog, para ir posteando y que si alguien puede aprender algo que lo haga. Solo espero haberme explicado bien. Ya me contarás que tal…
Felicidades, me encantan los blogs donde ademas de leer aprendes algo nuevo sobre informatica y tecnologia.
suerte!!
Hola Maniken,
Gracias, me alegro que te guste, esa es mi idea, aprender y no quedarmelo solo para mi.
[...] Si recordáis, el 9 de Noviembre explicaba cómo cargar imágenes de forma aleatoria cada vez que se cargaba una película Flash. Bien, el artículo acababa proponiendo una mejora: no cargar dos veces seguidas la misma imagen. [...]
RSS feed para los comentarios de esta entrada. TrackBack URL
Deja tu comentario