Página 1 de 1

Script Para Poner Efecto Nieve En El Foro

Publicado: 13 Dic 2006, 23:50
por Selena
Bueno decir que ya he conseguido algo con la ayuda de Class, un usuario de la web de Janu, pero aún no estoy satisfecha del resultado.

Los copos caen muy lentamente y muy pocos, a pesar de haberle dado los parámetros para que caigan más rápido y más copos. Además me lo ralentiza mucho todo, al pasar por encima de los flash, éstos se paran y los gifs animados también.

Y lo que es peor, en Firefox no se ve.

Este es el código tal como lo tengo ahora, en el overall_header.tpl despues de la etiqueta <body>

La dire del foro: http://www.buenafuente.ws/Foro por si lo queréis ver.

A ver si se os ocurre como mejorarlo, o si hay algún fallo, y sobre todo que se pueda ver en Firefox.

Muchas gracias de antemano :wink:

Código: Seleccionar todo

<script>
var no = 35; // snow number
var speed = 1; // smaller number moves the snow faster
var snowflake = "images/snow.gif";

var ns4up = (document.layers) ? 1 : 0;  // browser sniffer
var ie4up = (document.all) ? 1 : 0;
var dx, xp, yp;    // coordinate and position variables
var am, stx, sty;  // amplitude and step variables
var i, doc_width = 900, doc_height = 700;
if (ns4up) {
  doc_width = self.innerWidth;
  doc_height = self.innerHeight;
} else if (ie4up) {
  doc_width = 900;
  doc_height = 700;
}
dx = new Array();
xp = new Array();
yp = new Array();
am = new Array();
stx = new Array();
sty = new Array();
for (i = 0; i < no; ++ i) {  
  dx[i] = 0;                        // set coordinate variables
  xp[i] = Math.random()*(doc_width-50);  // set position variables
  yp[i] = Math.random()*doc_height;
  am[i] = Math.random()*20;         // set amplitude variables
  stx[i] = 0.02 + Math.random()/10; // set step variables
  sty[i] = 0.7 + Math.random();     // set step variables
  if (ns4up) {                      // set layers
    if (i == 0) {
      document.write("<layer name=\"dot"+ i +"\" left=\"15\" ");
      document.write("top=\"15\" visibility=\"show\"><img src=\"");
      document.write(snowflake + "\" border=\"0\"></layer>");
    } else {
      document.write("<layer name=\"dot"+ i +"\" left=\"15\" ");
      document.write("top=\"15\" visibility=\"show\"><img src=\"");
      document.write(snowflake + "\" border=\"0\"></layer>");
    }
  } else if (ie4up) {
    if (i == 0) {
      document.write("<div id=\"dot"+ i +"\" style=\"POSITION: ");
      document.write("absolute; Z-INDEX: "+ i +"; VISIBILITY: ");
      document.write("visible; TOP: 15px; LEFT: 15px;\"><img src=\"");
      document.write(snowflake + "\" border=\"0\"></div>");
    } else {
      document.write("<div id=\"dot"+ i +"\" style=\"POSITION: ");
      document.write("absolute; Z-INDEX: "+ i +"; VISIBILITY: ");
      document.write("visible; TOP: 15px; LEFT: 15px;\"><img src=\"");
      document.write(snowflake + "\" border=\"0\"></div>");
    }
  }
}
function snowNS() {  // Netscape main animation function
  for (i = 0; i < no; ++ i) {  // iterate for every dot
    yp[i] += sty[i];
    if (yp[i] > doc_height-50) {
      xp[i] = Math.random()*(doc_width-am[i]-30);
      yp[i] = 0;
      stx[i] = 0.02 + Math.random()/10;
      sty[i] = 0.7 + Math.random();
      doc_width = self.innerWidth;
      doc_height = self.innerHeight;
    }
    dx[i] += stx[i];
    document.layers["dot"+i].top = yp[i];
    document.layers["dot"+i].left = xp[i] + am[i]*Math.sin(dx[i]);
  }
  setTimeout("snowNS()", speed);
}

function snowIE() {  // IE main animation function
  for (i = 0; i < no; ++ i) {  // iterate for every dot
    yp[i] += sty[i];
    if (yp[i] > doc_height-50) {
      xp[i] = Math.random()*(doc_width-am[i]-30);
      yp[i] = 0;
      stx[i] = 0.02 + Math.random()/10;
      sty[i] = 0.7 + Math.random();
      doc_width = document.body.clientWidth;
      doc_height = document.body.clientHeight;
    }
    dx[i] += stx[i];
    document.all["dot"+i].style.pixelTop = yp[i];
    document.all["dot"+i].style.pixelLeft = xp[i] + am[i]*Math.sin(dx[i]);
  }
  setTimeout("snowIE()", speed);
}

if (ns4up) {
  snowNS();
} else if (ie4up) {
  snowIE();
}
</script>

Respuesta: Script Para Poner Efecto Nieve En El Foro

Publicado: 14 Dic 2006, 02:26
por invi
Hola Selena,

Hacia tiempo que no te veía por aquí, y reconozco que hace mucho que tampoco me paso yo por buenafuente :P

Bueno, al grano, para acelerar un poco la caida de los copos de nieve, simplemente cambia este valor:

var speed = 1;

Cambia el 1, por el valor que tu quieras, 2, 3, 4, 5...

Y a lo que dices que en firefox no se vé, si se vé, yo he entrado a tu foro con firefox y me salen perfectamente, aunque es cierto que caen lentos, cambia ese valor que te digo, y ya contarás ;)

Respuesta: Script Para Poner Efecto Nieve En El Foro

Publicado: 14 Dic 2006, 02:54
por Selena
Gracias por la respuesta Invi.
Es verdad que hace tiempo que no me paso pero es que estuve casi un mes sin conexión y luego muy liada, pero aunque no escriba siempre miro vuestras novedades.

El cambio que comentas para la velocidad no es así, si te fijas al lado en el código pone (en inglés) que a menor número mayor velocidad.

De todas formas JANU me ha pasado un Script, bueno es un Mod, que va mejor que este código:

Snow Falls Reloaded
http://www.phpbbhacks.com/download/5803

Este sí funciona con ambos exploradores, pero aún hay cosas que pulir.
Por eso me imagino que habrás visto copos con Firefox, porque ya había puesto este Mod.

Bueno lo iremos puliendo hasta que quede perfecto.

Ya os contaré, por si le puede servir a alguien.

Un beso Invi! :cerveza:

Respuesta: Script Para Poner Efecto Nieve En El Foro

Publicado: 14 Dic 2006, 04:57
por invi
Pues sí, es cierto, creo que no conviene responder a temas en phpBB-es a estas horas.. es el momento que uno se fija menos jejejeje, menos mal que tu te has dado cuenta.. porque si no.... merezco amarilla xD

Suerte Selena! ;)

Respuesta: Script Para Poner Efecto Nieve En El Foro

Publicado: 14 Dic 2006, 15:50
por Selena
No pasa nada Invi!!!
Un lapsus lo tiene cualquiera, además lo se porque yo cometí el mismo error hasta que me di cuenta de lo que ponía. Lo lógico era que a mayor número mayor velocidad, pero no, es al reves.

Nada de tarjetas homeeeeeeee!!! :chulo: