Cargar imágenes aleatoriamente II: SharedObject

VictorR Lunes, 9 de Enero del 2006

Etiquetas:

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.

Una solución a ese problema es fácilmente implementada mediante los SharedObject de Flash. Que no sabéis que son los SharedObject? Pues algo así como las cookies para el resto de lenguajes de programación web. Es decir, permiten mantener una persistencia de una cantidad limitada de datos en el cliente como, por ejemplo, nombre de usuario de una aplicación, puntuación conseguida en un juego, etc.

Las principales funciones de la clase SharedObject y las que vamos a utilizar en esta práctica son:

getLocal(): devuelve una referencia a un objeto guardado en el cliente o, si no existe, lo crea.

flush(): escribe la información que se desea guardar en un fichero en el cliente.

Y la propiedad de la clase SharedObject es:

data: Objeto. Como objeto que es, se pueden crear propiedades dinámicamente, estas propiedades será la información que guardemos al ejecutar la función flush().

Si recordais el código introducido en el MovieClip “images” en el artículo anterior:

var numberOfFrames:Number = this._totalframes;
var date:Date = new Date();
var frame:Number = (date.getSeconds() % numberOfFrames) + 1;
this.gotoAndStop(frame);

Conseguíamos decidir en qué frame colocar el cabezal de tiempo a partir de los segundos del objeto Date. A continuación marco en negrita los cambios a realizar para que no repita frame utilizando los SharedObject:

var numberOfFrames:Number = this._totalframes;
var date:Date = new Date();
var frame:Number = (date.getSeconds() % numberOfFrames) + 1;

var soLastVisited:SharedObject = SharedObject.getLocal("lastVisited");
if (lastVisited.data.frame == frame){
    frame = ((frame + 1) % numberOfFrames) + 1;
}
soLastVisited.data.frame = frame;
soLastVisited.flush();

this.gotoAndStop(frame);

Expliquemos un poco el código.

En primer lugar, creamos el objeto soLastVisited del tipo SharedObject. Mediante la finción getLocal() intentamos leer el objeto del cliente, si este no existe, lo creamos en este momento.

var soLastVisited:SharedObject = SharedObject.getLocal("lastVisited");

Si el frame calculado es el mismo que el que tenemos registrado tras la última visita, le sumamos uno y volvemos a aplicar el módulo respecto el total de frames.

if (lastVisited.data.frame == frame){
    frame = ((frame + 1) % numberOfFrames) + 1;
}

Finalmente, guardamos los datos en la propiedad data de nuestro SharedObject y en el cliente mediante la función flush().

soLastVisited.data.frame = frame;
soLastVisited.flush();

Y patatín, patatán, patabuuum! Acabado el ejercicio, sin dificultad alguna, verdad? Ahora que ya sabemos algo de los SharedObject de Flash podemos practicar a crear una aplicación que pida algún dato al usuario, como su nombre, domicilio, cuenta bancaria y me los enviais a mi para que le pase una pequeña factura con unos cuantos ceros… jejeje, esto es broma, pero las posibilidades de inventar con esto son muchas y diversas.

Un saludo a todos.

Sin comentarios a "Cargar imágenes aleatoriamente II: SharedObject" »

No hay ningún comentario.

Suscripción RSS a los comentarios de esta entrada. TrackBack URL

Deja tu comentario

* Obligatorio. ** Obligatorio, no será publicado.