Imágenes (semi) aleatorias en Flash
3 seguidores
Necesito hacer una galeria de imagenes que carguen aleatoriamente en flash pero con un matiz que no he podido encontrar en ningún tutorial.
Tengo varias carpetas, cada una con una serie de fotografias. Lo que necesito es que, aleatoriamente escoja una carpeta y, a su vez, aleatoriamente vaya cargando todas las imagenes de esa carpeta sin repetirlas.
Un vez terminada esa rotación, escogería otra carpeta aleatoriamente...
¡Parece complicado! A ver si algún gurú del Actionscript se le ocurre como resolverlo.
xavib
Puedes hacerlo mediante PHP + XML leyendo todo el contenido de un directorio determinado y generando la estructura XML que te convenga de forma aleatoria y bajo demanda. Así no tendrás que preocuparte en flash de hacer el random, y una vez lo haya recorrido entero que salte al siguiente, por orden, porque vendrán diferentes cada vez.
En mi opinión este caso es más óptimo en servidor que en cliente.
tpmmds
BuenAS:
Una opción sin php:
Si tienes un xml con una estructura, por ejemplo, miXml.carpeta.imagen, podrías utilizar un Timer y que cada vez que se ejecute vaya saltando entre los distintos nodos "carpeta" del xml (secuencial o aleatoriamente). Compruebas el número de hijos que tiene el nodo "carpeta" y lo vas recorriendo en cada loop del Timer.
Podrían serte útiles las funcioncillas:
function arrayAleatorio(a:int, b:int):Array {
var array:Array = new Array();
var arrayAleatorio:Array = new Array();
var i:int;
for (i=a;i0) {
arrayAleatorio.push(array.splice(numAleatorio(0, array.length-1), 1));
}
return arrayAleatorio;
}
function numAleatorio(a:int, b:int):int {
return Math.round(a + (b-a)*Math.random());
}
La primera te devuelve una matriz de números aleatorios ÚNICOS. Por ejemplo, arrayAleatorio(0, 5) te devolvería: 2,4,3,5,0,1; y la segunda un número aleatorio entero entre el rango que le des.
Puedes utilizar la segunda función para elegir un nodo "carpeta" aleatorio, generar una matriz de números aleatorios "únicos" y recorrerla en cada timer para ir mostrando cada imagen.
Un saludo y no sé si me he liado en la explicación; es más fácil de lo que parece después de leer todo este rollo :-)