Comunidad de diseño web y desarrollo en internet online

Cargar varios archivos SWF aleatorios, sin repetirse

Citar            
MensajeEscrito el 21 Jul 2008 11:00 am
Hola,

hay muchos post parecidos a lo que busco, pero no son exactamente lo que quiero, a ver si me pueden echar una mano.

tengo varios archivos swf independientes, todos al mismo tamaño.
mi intencion es crear un html con una tabla llena de celdas, y en cada celda un swf diferente.
al cargar la pagina los swf tienen que cargarse de forma aleatoria y sin repetirse.

Como podria ser el script?


Un saludo.

Por okakitorimoke

28 de clabLevel



Genero:Masculino  

safari
Citar            
MensajeEscrito el 21 Jul 2008 02:03 pm
Mediante javascript crea un arreglo aleatorio partiendo de otro arreglo existente, por ejemplo randomArray tendrá los mismos valores de movies lo que desordenados y cada vez que se ejecute el script va a ser diferente. Ya después teniendo este arreglo aleatorio crea un ciclo que cree las celdas y ponga el respectivo swf dentro

Código :

<script language="javascript">

   var movies = new Array("movie1.swf", "movie2.swf", "movie3.swf", "movie4.swf", "movie5.swf", "movie6.swf", "movie7.swf", "movie8.swf", "movie9.swf", "movie10.swf"); 
   var randomArray = new Array();
   var sum = 0;
   var total = movies.length;
   var rand;
   var randMovie;   
   
   while(sum < total){
   
      rand = Math.floor(Math.random()*total);
      randMovie = movies[rand];
      
      if(randomArray.indexOf(randMovie) < 0){
      
         randomArray[sum] = randMovie;
         sum++;
      
      }
   
   }

</script>

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 21 Jul 2008 10:05 pm
Pero como hago ahora para llamar a un swf en el html con el script indicado?

Por okakitorimoke

28 de clabLevel



Genero:Masculino  

safari
Citar            
MensajeEscrito el 22 Jul 2008 03:59 am
nop, si quieres que el swf no se repita, ddeberas usar una variable de session con php (o cualquier lenguaje del lado del servidor) o guardar la lista de los swf en una cookie y leerla con el swf (no si js los lea, pero supongo que si)

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 23 Jul 2008 09:58 am
Veréis, en otro foro encontre este codigo, que es exactamente lo que quiero, carga 4 imagenes aleatoriamente y sin repetirse, lo que pasa que este esta hecho para imagenes, y poniendo swf's en su lugar no funciona, creo que hay que cambiar algo mas, y creo que es en la linea que pone <img src="" name=imagen1> que hace referencia a una imagen y tendria que ser a un swf.



<html>
<head>
<title>
4 imágenes sin repetir
</title>
<script>
var imagenes = [
"http://www.sucaricatura.com/2002/maxi/2002H001.jpg",
"http://www.sucaricatura.com/2002/mini/2002H002.jpg",
"http://www.sucaricatura.com/2002/maxi/2002H003.jpg",
"http://www.sucaricatura.com/2002/mini/2002H004.jpg",
"http://www.sucaricatura.com/2002/maxi/2002H005.jpg",
"http://www.sucaricatura.com/2002/mini/2002H006.jpg",
"http://www.sucaricatura.com/2002/maxi/2002H007.jpg"
];

function azar() {
var temp = new Array(4);
temp[0] = Math.floor(Math.random() * imagenes.length);
do
temp[1] = Math.floor(Math.random() * imagenes.length);
while (temp[0] == temp[1])
do
temp[2] = Math.floor(Math.random() * imagenes.length);
while (temp[0] == temp[1] || temp[0] == temp[2] || temp[1] == temp[2])
do
temp[3] = Math.floor(Math.random() * imagenes.length);
while ( temp[0] == temp[1] ||
temp[0] == temp[2] ||
temp[1] == temp[2] ||
temp[0] == temp[3] ||
temp[1] == temp[3] ||
temp[2] == temp[3]
)
// alert(temp[0] + ", " + temp[1] + ", " + temp[2] + ", " + temp[3]);
document.images.imagen1.src = imagenes[temp[0]];
document.images.imagen2.src = imagenes[temp[1]];
document.images.imagen3.src = imagenes[temp[2]];
document.images.imagen4.src = imagenes[temp[3]];
}
</script>
</head>
<body onload=azar()>
<img src="" name=imagen1>
<img src="" name=imagen2>
<img src="" name=imagen3>
<img src="" name=imagen4>
</body>
</html>

Por okakitorimoke

28 de clabLevel



Genero:Masculino  

safari
Citar            
MensajeEscrito el 23 Jul 2008 07:54 pm
Mira el código js que te puse hace lo mismo que este que tienes (toma un arreglo y lo desordena), lo que este último lo hace un poco más complicado, lo que debes hacer es a partir de este arreglo crear los divs contenedores e insertar los swf, este ejemplo solamente lo hago con <object> si quiseras añadirle el script de Adobe debes aumentar las líneas de la variable code:

Código :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>

<script language="javascript">

   var movies = new Array("movie1.swf", "movie2.swf", "movie3.swf", "movie4.swf", "movie5.swf", "movie6.swf", "movie7.swf", "movie8.swf", "movie9.swf", "movie10.swf"); 
   var randomArray = new Array();
   var sum = 0;
   var total = movies.length;
   var rand;
   var randMovie;   
   
   while(sum < total){
   
      rand = Math.floor(Math.random()*total);
      randMovie = movies[rand];
      
      if(randomArray.indexOf(randMovie) < 0){
      
         randomArray[sum] = randMovie;
         sum++;
      
      }
   
   }

</script>

</head>

<body>

<div id="mainDiv"></div>

</body>

<script language="javascript">

   var code = '';
   
   for(var i = 0; i < randomArray.length; i++){
   
      code += '<div>';      
      
      code += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="300" height="200" title="'+ randomArray[i] +'">';
      code += '<param name="movie" value="'+randomArray[i]+'" />';
      code += '<param name="quality" value="high" />';
      code += '<param name="menu" value="false" />';
      code += '<embed src="'+randomArray[i]+'" width="300" height="200" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" menu="false"></embed>';
      code += '</object>';      
      
      code += '</div>';
   
   }
   
   document.getElementById("mainDiv").innerHTML = code;

</script>

</html>

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 24 Jul 2008 08:54 am
Gracias elchininet, a funcionado perfectamente, aqui esta el ejemplo: http://www.kctus.es/desorden/

Solo 2 dudas mas..

1. Lo que se ve en el ejemplo, es lo que sale poniendo el codigo tal y como lo pusiste, pero no se de que forma reorganizarlas, salen una debajo de otra automaticamente. Mi intencion es crear una tabla de 3 columnas llena de celdas, y en cada celda meter cada swf, asi: http://www.kctus.es/desorden/prueba.html , pero atraves del codigo no veo como organizarlas individualmente.

2. Me gustaria quitar el texto "alt" que sale cuando dejas el raton encima de cada swf, como se podria anular?


Gracias de nuevo.

Por okakitorimoke

28 de clabLevel



Genero:Masculino  

safari
Citar            
MensajeEscrito el 24 Jul 2008 03:54 pm
No se a que texto de alt te refieres, ninguno de los SWF tienen alt.

Para lo que quieres fijate como funciona una tabla de tres columnas:

table
tr
td
td
td
tr

tr
td
td
td
tr

Lo que tienes que hacer es hacer una variable dentro del ciclo que cuando llegue a 3 vuelva a empezar por cero y cada vez que pase un ciclo de a 3 creas un nuevo tr, mientras tanto vas creando td, lo que fuera del ciclo al principio tienes que declarar la tabla y al final del ciclo fuera tambien cerrarla.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 25 Jul 2008 03:54 pm
Sorry pero no entiendo lo de los ciclos, estoy un poco verde. Como no me me hagas un copypaste de lo que tengo que poner no me aclaro.

El codigo html que tengo ahora mismo es este y no me funciona.


Código :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>

<script language="javascript">

   var movies = new Array("trabajo1.swf", "trabajo2.swf", "trabajo3.swf", "trabajo4.swf", "trabajo5.swf", "trabajo6.swf"); 
   var randomArray = new Array();
   var sum = 0;
   var total = movies.length;
   var rand;
   var randMovie;   
   
   while(sum < total){
   
      rand = Math.floor(Math.random()*total);
      randMovie = movies[rand];
      
      if(randomArray.indexOf(randMovie) < 0){
      
         randomArray[sum] = randMovie;
         sum++;
      
      }
   
   }

</script>

</head>

<body>


<table width="100%" border="1">
  <tr>
    <td><div id="mainDiv"></div></td>
    <td><div id="mainDiv"></div></td>
    <td><div id="mainDiv"></div></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
</table>
</body>

<script language="javascript">

   var code = '';
   
   for(var i = 0; i < randomArray.length; i++){
   
      code += '<div>';      
      
      code += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="240" height="210" title="'+ randomArray[i] +'">';
      code += '<param name="movie" value="'+randomArray[i]+'" />';
      code += '<param name="quality" value="high" />';
      code += '<param name="menu" value="false" />';
      code += '<embed src="'+randomArray[i]+'" width="240" height="210" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" menu="false"></embed>';
      code += '</object>';      
      
      code += '</div>';
   
   }
   
   document.getElementById("mainDiv").innerHTML = code;

</script>

</html>


Con lo del "alt", me refiero a que si mantienes el cursor sobre una pelicula swf, sale el texto del archivo "trabajo1.swf" por ejemplo, y no queria que apareciese.

Por okakitorimoke

28 de clabLevel



Genero:Masculino  

safari

 

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