Comunidad de diseño web y desarrollo en internet online

Carga Aleatoria de Peliculas sin Repeticion

Citar            
MensajeEscrito el 02 Jun 2008 03:29 am
Hola a todos:
Tengo 4 banners y los cargo aleatoriamente a un contenedor en una película principal, mi problema es que repite hasta 3 o 4 veces un mismo banner, con la ayuda de varias consultas en foros he logrado llegar a cierto código pero todavía no corrijo el problema, que tengo mal ???, o alguien me puede ayudar a crear un nuevo código???.
El código es el siguiente:

Código :

var pelicula = new Array("banners/banner001.swf", "banners/banner002.swf", "banners/banner003.swf");
var numAnterior = -1;

numActual = random(4); // Calculamos el numero aleatorio
if(numActual == numAnterior){ // Si coincide con el anterior
numActual = numActual + 1; // Le sumamos uno
if(numActual >= 4) { // Si nos salimos del array
numActual = 0; // Nos vamos al principio del array
}
}
numAnterior = numActual; // Guardamos el numero para la siguiente comparacion
cargar = pelicula[numActual];
contenedor.loadMovie(cargar);


Muchas gracias y saludos. :)

Editado por eldervaz

Por terry_web

20 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 02 Jun 2008 12:17 pm
Uff, vaya código mas malo has conseguido. La pregunta es un clásico (tomar elementos de un array sin que se repitan) es algo así

Código :

base = [1,2,3,4, 5, 6]
var total = base.length
for(var i=0; i<total; i++){
  var alAzar = base.splice(Math.random()*base.length-1, 1)
  trace(alAzar)
}


Hay muchas variaciones, lo importante es que lo puedas adaptar a tu proyecto

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 02 Jun 2008 11:50 pm
Hola Solisarg Muchas gracias por tu respuesta.
No conozco mucho de programación, intente adaptar tu código a mi trabajo y sigue el problema que repite varias veces un mismo banner.
Codigo:
base = [\\\"banners/banner_costos001.swf\\\", \\\"banners/banner_costos002.swf\\\", \\\"banners/banner_costos003.swf\\\"]
var total = base.length
for(var i=0; i<total; i++){
var alAzar = base.splice(Math.random()*base.length-1, 1)
contenedor.loadMovie(alAzar);
}
Saludos. :)

Por terry_web

20 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 03 Jun 2008 02:07 am
En el código que has puesto siempre cargas el último, con lo cual la repetición es la misma que si no hicieras nada. Pon solo esto en un peli nueva y publica:

Código :

base = [1,2,3,4, 5, 6]
var total = base.length
for(var i=0; i<total; i++){
  var alAzar = base.splice(Math.random()*base.length-1, 1)
  trace(alAzar)
}


Si miras la ventana de salida, verás 6 números que no se repiten, uno tras otro. Evidentemente una vez que se agotan, pues ya se repiten. Dale un tiempo para entenderlo, vuelve a preguntar si no entiendes. Luego tu repetición no puede ir en loop, sino que tiene que ser entre diferentes frames. Ahor si lo que estás haciendo es recargar la película Flash, entonces evidentemente no hay nada que puedas hacer (a no ser que manejes sesiones y el mismo principio, pero ahora en el lenguaje de back-end, no en AS)

Jorge

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.