Avatar billede nemet_dk Nybegynder
17. november 2005 - 19:12 Der er 16 kommentarer og
1 løsning

Snow-script skal kun sne lodret og ikke vandret hvordan?

Hejsa...

Jeg har lånt et snowscript fra dynamicdrive.com

dette script virker helt perfekt, på nær at det udvider browers vinduet vandret hvilket er meget irriterende.

Er det muligt at fixe scriptet?

//Snow - http://www.btinternet.com/~kurt.grigg/javascript

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

(function(){

//Configure here.

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

//End.

var y = [];
var x = [];
var fall = [];
var theFlakes = [];
var sfs = [];
var step = [];
var currStep = [];
var h,w,r;
var d = 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 (i = 0; i < num; i++){
sfs[i] = Math.round(1 + 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(2 + Math.random() * 2): Math.round(3 + Math.random() * 2);
step[i] = (sfs[i] == 1)?
0.05 + Math.random() * 0.1 : 0.05 + Math.random() * 0.05 ;
}


if (domWw) r = window;
else{
  if (d.documentElement &&
  typeof d.documentElement.clientWidth == "number" &&
  d.documentElement.clientWidth != 0)
  r = d.documentElement;
else{
  if (d.body &&
  typeof d.body.clientWidth == "number")
  r = 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;
}
h = rh - 2; 
w = rw - 2;
}
else{
h = r.clientHeight - 2;
w = r.clientWidth - 2;
}
}


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


function snow(){
var dy,dx;

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

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

if (x[i] >= w || y[i] >= h){
  y[i] = -10;
  x[i] = Math.round(Math.random() * w);
  fall[i] = (sfs[i] == 1)?
  Math.round(2 + Math.random() * 2): Math.round(3 + 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 (i = 0; i < num; i++){
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.

/nemet_dk
Avatar billede nielle Nybegynder
17. november 2005 - 19:34 #1
Prøv at rette denne linje:

dx = fall[i] * Math.cos(currStep[i]);

- til:

dx = 0;
Avatar billede nemet_dk Nybegynder
17. november 2005 - 19:45 #2
Det gav da lidt, men den side hvor jeg skal bruge dette script er lavet som en bjæke i midten af skærmen lidt lige som eksperten.dk, lige som her er der ikke nogle scrollbar vandret. jeg ved godt at jeg kan fjerne den vandrette scrollbar. men det øsnker jeg ikke få så fucker dreamweaver total op når jeg gør det...

Det er lidt lige som at scritet "sner" meste i højre side af siden og ikke så meget i venster del. kan det har noget med det at gøre.?

/nemet_Dk
Avatar billede nemet_dk Nybegynder
17. november 2005 - 19:47 #3
Eller det vil sige at jeg har lige siddet og kigger lidt på "sneen" og nu falder den bare lodret ned og ikke "vivler" rundte som før..

/nemet_dk
Avatar billede nielle Nybegynder
17. november 2005 - 19:58 #4
Jeg er ikke sikker... Fungerer det så nu som du ville have det eller hvad?
Avatar billede michael_mortensen Nybegynder
17. november 2005 - 20:00 #5
Bare et tip, undlad disse sne scripts. De kan være frygteligt søde at se på, men for pokker hvor kan de være distraherende og CPU-alt-ædende.. :)
Avatar billede nemet_dk Nybegynder
17. november 2005 - 21:22 #6
Neille nej det virker ikke helt som jeg gerne vil ha det til...
tak for tippet men da det er en hjemmeside der blot skal køre indtil uge 4 og den bruges kun af få brugere, så mener jeg ikke at det er det store problem

/nemet_dk
Avatar billede nielle Nybegynder
17. november 2005 - 21:38 #7
Nu virker det i hvert fald som du formulerede... Så du bliver nok nødt til at specifisere lidt mere hvad det er for en effekt du eftersøger?
Avatar billede nemet_dk Nybegynder
21. november 2005 - 18:17 #8
Beklager at jeg ikke har skrevet tilbage, men jeg har været pænt syg.

Ok det jeg godt kunne tænke mig er at, den sne der kommer ned fra toppen af skærmen bevæger sig som i hvivler lige som den gør når scriptet er standart. Problemet er bare at sneen ligesom starte med at falde fra "midten" af skærmen og ikke oppe i venstre hjørne.

Hvis dette stadig er total sort, så er der ikke noget at gøre ved det..

/nemet_dk
Avatar billede nielle Nybegynder
21. november 2005 - 18:36 #9
Personligt synes jeg nu at begge versioner af scriptet ser pæne ud, og jeg kan i hvert fald ikke se at det falder fra midten - hos mig kommer det ligeligt fordelt over hele toppen.
Avatar billede nemet_dk Nybegynder
01. december 2005 - 18:04 #10
Hejsa...

Undskyld at ejg har været så længe om at svare men min skole har taget alt min tid det sidste stykketid...

Jeg kan godt se at scriptet virker fint, men mit problem er at det udvider siden vandret altefter som "sneen" falder længere og længere med højre. Det oprendelig som jeg gerne ville har det til, var at det ikke skulle udvide siden vandret...

Så det er faktisk meget simpel, kan man lave om i scriptet så den ikke sender sneen ud at vinduet..

/nemet_dk
Avatar billede nielle Nybegynder
01. december 2005 - 21:00 #11
Hvis du kender grænse-værdierne til begge sider af skørmen, kan du jo udvide denne line:

x[i]+=dx;

- til:

x[i]+=dx;
if (x[i] < xMinimum) x[i] = xMinimum;
if (x[i] > xMaksimum) x[i] = xMaksimum;
Avatar billede nemet_dk Nybegynder
08. december 2005 - 17:50 #12
Hejsa Nielle...

Jeg er ikke helt med på hvad du mener, men jeg syntes at du skal ha dine point for din hjælp...
Så hvis du smider et svar så skal jeg give dig points...

/nemet_dk
Avatar billede nielle Nybegynder
08. december 2005 - 18:55 #13
Din side har en bredde (i pixels); xMinimum skal sikkert sættes til værdien 0 (med mindre at du vil have sneen til at have en margin mod venstre. xMaksimum skal være lig med bredden af din side (eller lidt mindre hvis sneen ikke skal gå helt ud til venstre side).
Avatar billede nemet_dk Nybegynder
10. december 2005 - 15:42 #14
nååå ok, jamen det vil jeg da lige prøve... mange tak
smider du ikke et svar? så du kan få dine points...

/Nemet_Dk
Avatar billede nielle Nybegynder
10. december 2005 - 23:31 #15
Oki :^)
Avatar billede nielle Nybegynder
20. december 2005 - 19:09 #16
Husk nu at acceptere svaret :^)
Avatar billede nielle Nybegynder
28. december 2005 - 21:14 #17
Takker for point :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester