Avatar billede cmau Nybegynder
09. december 2004 - 16:53 Der er 8 kommentarer og
1 løsning

Lav sne script bedre

Hey.. jeg har det her sne script:

var no = 25;                                     // number of snowflakes
var speed = 10;                                 // the smaler, the faster move snowflakes
var snowflake = "sne.gif";                  // picture source
var ns4b = (document.layers) ? 1 : 0;      // Netscape4.x
var b4up = (document.all) ? 1 : 0;            // MSIE4, Opera5, Netccape5
var dx, xp, yp;                                // coordinate and position variables
var am, stx, sty;                                // amplitude and step variables
var snowobj;
var i, doc_width = 800, doc_height = 600;

if (ns4b) {
    doc_width  = self.innerWidth;
    doc_height = self.innerHeight;
} else if (b4up) {
    doc_width  = document.body.clientWidth;
    doc_height = document.body.clientHeight;
} else {
    b4up = 1;                                    // 800x600 screen-default
}// if

dx = new Array();
xp = new Array();
yp = new Array();
am = new Array();
stx = new Array();
sty = new Array();
snowobj = new Array();

for (i=0; i<no; ++i) {                      // iterate for every snowflake
    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 (ns4b) {                                    // set layers
        document.write("<LAYER NAME=\"flake"+ i +"\" LEFT=\"15\" TOP=\"15\" VISIBILITY=\"show\"><IMG SRC=\""+ snowflake +"\" BORDER=0></LAYER>");
    } else if (b4up) {
        document.write("<DIV ID=\"flake"+ i +"\" STYLE=\"position:absolute; z-index:"+ i +"; visibility:visible; top:15px; left:15px;\"><IMG SRC=\""+ snowflake +"\" BORDER=0></DIV>");
        snowobj[i] = eval (document.getElementById("flake"+i).style);
    }//if
}//for

function snowNS() {                          // Netscape4 main animation function
    for (i=0; i<no; ++i) {                  // iterate for every snowflake
        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();
        }//if
        dx[i] += stx[i];
        document.layers["flake"+i].top = yp[i];
        document.layers["flake"+i].left = xp[i] + am[i]*Math.sin(dx[i]);
    }//for
    setTimeout("snowNS()", speed);
}//snowNS

function snowDocument() {                  // MSIE4, Opera5, Netscape5 main animation function
    for (i=0; i<no; ++i) {                    // iterate for every flake
        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();
        }//if
        dx[i] += stx[i];
        snowobj[i].top  = yp[i];
        snowobj[i].left = xp[i] + am[i]*Math.sin(dx[i]);
    }//for
    setTimeout("snowDocument()", speed);
}//snowDocument

if (ns4b) {                                    // Netscape4
    snowNS();
} else if (b4up) {                        // MSIE4, Opera5, Netscape5
    snowDocument();
}//if


Er der nogle der kan lave det om sneen falder helt til bunden af siden. sådan som det er nu bliver det til dette: http://www.dynamicdrive.com/dynamicindex3/snow.htm

Men hvis i scroller helt ned der forsvinder de inden de rammer bunden.

Kan i lave så de flader 100%brede og 100% højde
Avatar billede olebole Juniormester
09. december 2004 - 19:07 #1
<ole>

Er det ikke nok, det allerede sluger mellem 55 og 75% af CPU-kraften på en rimelig kraftig laptop?  ;o)

/mvh
</bole>
Avatar billede plazm Nybegynder
09. december 2004 - 19:11 #2
hehe Ole tager "kun" 5% på min ;)

Og ang spørgsmålet så tror jeg ikke, uden at kunne være sikker på det, at det kan lade sig at gøre, da browserne plejer at lave så man kan scrolle på siden, hvis en layer rammer uden for det synlige. Men jeg skal ikke kunne sige det
Avatar billede olebole Juniormester
09. december 2004 - 19:23 #3
Jo, det kan du nu godt. Du kan skifte 'document.body.clientHeight' ud med 'document.documentElement.scrollHeight' - og så kræver det, du har denne DTD:
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
Avatar billede cmau Nybegynder
09. december 2004 - 19:57 #4
Den der linje du beskriver olebole ('document.body.clientHeight') hvor er den? Kan ikke finde den.
Avatar billede cmau Nybegynder
09. december 2004 - 19:58 #5
jo har lige fundet den.. prøver lige
Avatar billede cmau Nybegynder
09. december 2004 - 20:02 #6
Nu har jeg prøvet at sætte den kode ind:

var no = 25;                                     // number of snowflakes
var speed = 10;                                 // the smaler, the faster move snowflakes
var snowflake = "sne.gif";                // picture source
var ns4b = (document.layers) ? 1 : 0;    // Netscape4.x
var b4up = (document.all) ? 1 : 0;        // MSIE4, Opera5, Netccape5
var dx, xp, yp;                                // coordinate and position variables
var am, stx, sty;                                // amplitude and step variables
var snowobj;
var i, doc_width = 800, doc_height = 600;

if (ns4b) {
    doc_width  = self.innerWidth;
    doc_height = self.innerHeight;
} else if (b4up) {
    doc_width  = document.documentElement.scrollWidth;
    doc_height = document.documentElement.scrollHeight;
} else {
    b4up = 1;                                    // 800x600 screen-default
}// if

dx = new Array();
xp = new Array();
yp = new Array();
am = new Array();
stx = new Array();
sty = new Array();
snowobj = new Array();

for (i=0; i<no; ++i) {                      // iterate for every snowflake
    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 (ns4b) {                                    // set layers
        document.write("<LAYER NAME=\"flake"+ i +"\" LEFT=\"15\" TOP=\"15\" VISIBILITY=\"show\"><IMG SRC=\""+ snowflake +"\" BORDER=0></LAYER>");
    } else if (b4up) {
        document.write("<DIV ID=\"flake"+ i +"\" STYLE=\"position:absolute; z-index:"+ i +"; visibility:visible; top:15px; left:15px;\"><IMG SRC=\""+ snowflake +"\" BORDER=0></DIV>");
        snowobj[i] = eval (document.getElementById("flake"+i).style);
    }//if
}//for

function snowNS() {                          // Netscape4 main animation function
    for (i=0; i<no; ++i) {                  // iterate for every snowflake
        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();
        }//if
        dx[i] += stx[i];
        document.layers["flake"+i].top = yp[i];
        document.layers["flake"+i].left = xp[i] + am[i]*Math.sin(dx[i]);
    }//for
    setTimeout("snowNS()", speed);
}//snowNS

function snowDocument() {                  // MSIE4, Opera5, Netscape5 main animation function
    for (i=0; i<no; ++i) {                    // iterate for every flake
        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();
        }//if
        dx[i] += stx[i];
        snowobj[i].top  = yp[i];
        snowobj[i].left = xp[i] + am[i]*Math.sin(dx[i]);
    }//for
    setTimeout("snowDocument()", speed);
}//snowDocument

if (ns4b) {                                    // Netscape4
    snowNS();
} else if (b4up) {                        // MSIE4, Opera5, Netscape5
    snowDocument();
}//if
Avatar billede cmau Nybegynder
10. december 2004 - 12:09 #7
Min fejl jeg glemt da sætte denne linje ind: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

Men nu gør den det her: http://kdp.users.whitehat.dk/exp.htm
Avatar billede cmau Nybegynder
11. december 2004 - 13:14 #8
Så kan det også bare være lige meget.
Avatar billede olebole Juniormester
11. december 2004 - 20:23 #9
Det er et 'antikt' script, det ikke rigtig kan betale sig at pille i. Det ville være lettere at skrive et nyt og mere effektivt, der samtidig retter sig mod moderne browsere  :)
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