Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   HTML, Javascript y otros (https://www.clubdelphi.com/foros/forumdisplay.php?f=38)
-   -   Script Efecto Nieve retarda GIFs Animados (https://www.clubdelphi.com/foros/showthread.php?t=63302)

Deiv 08-02-2009 17:05:19

Script Efecto Nieve retarda GIFs Animados
 
Este efecto lo vi por las fechas de Navidad, y buscando en Google, encontré otro tipo de efecto NIEVE, aquellos que con una imagen (a elección) se podía observar este efecto de caida, imagino que lo conocen.
Pero este, par mi era nuevo nya que caía solo pixels, por ello quise incluir en el diseño de mi página el mismo.
¿Alguien podría explicarme por favor por qué este JScript? ralentiza el cargado de página?, verán estoy probando en Casa, aún no lo he subido a Internet, tengo algunas imágenes PNG puestas, un Video Flash SWF, un par de otros JScripts, y otro par de Gifs Animados.
Pude observar que si quito este script del <head> de mi HTML, todo funciona Ok, pero con este puesto encima, se mueven muy lentos los Gifs Animados, las marquesinas e inclusive al pasar por el Menú hecho en CSS se puede observar esta ralentización.
Código PHP:

if  ((document.getElementById) && 
window.addEventListener || window.attachEvent){

(function(){

//Configure here.

var num 40;   //Number of flakes
var timer 30//setTimeout speed. Varies on different comps
var enableinNS6 //Enable script in NS6/Mozilla? Snow animation could be slow in those browsers. (1=yes, 0=no).

//End.

var = [];
var 
= [];
var 
fall = [];
var 
theFlakes = [];
var 
sfs = [];
var 
step = [];
var 
currStep = [];
var 
h,w,r;
var 
document;
var 
pix "px";
var 
domWw = (typeof window.innerWidth == "number");
var 
domSy = (typeof window.pageYOffset == "number");
var 
idx d.getElementsByTagName('div').length;

if (
d.documentElement.style && 
typeof d.documentElement.style.MozOpacity == "string")
num 12;

for (
0numi++){
sfs[i] = Math.round(Math.random() * 1);

document.write('<div id="flake'+(idx+i)+'" style="position:absolute;top:0px;left:0px;width:'
+sfs[i]+'px;height:'+sfs[i]+'px;background-color:#ffffff;font-size:'+sfs[i]+'px"><\/div>');

currStep[i] = 0;
fall[i] = (sfs[i] == 1)?
Math.round(Math.random() * 2): Math.round(Math.random() * 2);
step[i] = (sfs[i] == 1)?
0.05 Math.random() * 0.1 0.05 Math.random() * 0.05 ;
}


if (
domWwwindow;
else{ 
  if (
d.documentElement && 
  
typeof d.documentElement.clientWidth == "number" && 
  
d.documentElement.clientWidth != 0)
  
d.documentElement;
 else{ 
  if (
d.body && 
  
typeof d.body.clientWidth == "number")
  
d.body;
 }
}


function 
winsize(){
var 
oh,sy,ow,sx,rh,rw;
if (
domWw){
  if (
d.documentElement && d.defaultView && 
  
typeof d.defaultView.scrollMaxY == "number"){
  
oh d.documentElement.offsetHeight;
  
sy d.defaultView.scrollMaxY;
  
ow d.documentElement.offsetWidth;
  
sx d.defaultView.scrollMaxX;
  
rh oh-sy;
  
rw ow-sx;
 }
 else{
  
rh r.innerHeight;
  
rw r.innerWidth;
 }
rh 2;  
rw 2
}
else{
r.clientHeight 2
r.clientWidth 2
}
}


function 
scrl(yx){
var 
y,x;
if (
domSy){
 
r.pageYOffset;
 
r.pageXOffset;
 }
else{
 
r.scrollTop;
 
r.scrollLeft;
 }
return (
yx == 0)?y:x;
}


function 
snow(){
var 
dy,dx;

for (
0numi++){
 
dy fall[i];
 
dx fall[i] * Math.cos(currStep[i]);

 
y[i]+=dy;
 
x[i]+=dx

 if (
x[i] >= || y[i] >= h){
  
y[i] = -10;
  
x[i] = Math.round(Math.random() * w);
  
fall[i] = (sfs[i] == 1)?
  
Math.round(Math.random() * 2): Math.round(Math.random() * 2);
  
step[i] = (sfs[i] == 1)?
  
0.05 Math.random() * 0.1 0.05 Math.random() * 0.05 ;
 }
 
 
theFlakes[i].top y[i] + scrl(0) + pix;
 
theFlakes[i].left x[i] + scrl(1) + pix;

 
currStep[i]+=step[i];
}
setTimeout(snow,timer);
}


function 
init(){
winsize();
for (
0numi++){
 
theFlakes[i] = document.getElementById("flake"+(idx+i)).style;
 
y[i] = Math.round(Math.random()*h);
 
x[i] = Math.round(Math.random()*w);
}
snow();
}


if (
window.addEventListener){
 
window.addEventListener("resize",winsize,false);
 
window.addEventListener("load",init,false);
}  
else if (
window.attachEvent){
 
window.attachEvent("onresize",winsize);
 
window.attachEvent("onload",init);


})();
}
//End. 

Una ayuda por favor?

dec 09-02-2009 00:07:59

Hola,

Personalmente, me olvidaría de este tipo de "scripts". En efecto, suelen resultar "caros", consumen recursos a gogó, tal vez menos, si el "script" en cuestión está optimizado. Realmente no sé cuál es el caso del script que muestras, pero, sólo diré que esa ralentización no sólo la notarás tú, sino cualquiera que visite tu página, y, en mayor medida, cuando sus recursos sean menores que los tuyos. Además, como dices, no es que el "script" sea lento de por sí, sino que ralentiza todo lo que tiene alrededor. No sé. Tal vez no debería estar diciéndote esto, porque, desde luego, no estoy aportando ninguna solución, pero, ya está escrito... :rolleyes:


La franja horaria es GMT +2. Ahora son las 11:50:31.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi