Avatar billede fixxxer Nybegynder
25. marts 2004 - 17:14 Der er 2 kommentarer og
1 løsning

advanceret preload

Jeg skal have lavet et script der preloader nogle billeder og viser en progressbar for dette. Jeg kan så absolut ikke bruge eksemplet fra dynamicdrive.com, fordi det kun tillader grafik på 1x1, som bliver gentaget hen over min progressbar... jeg har en grafik der er 24x20 og som skal gentages 10x over 240 pixel.

Jeg troede jeg havde lavet en smart work-around, men det viste sig at jeg ikke havde. Den den sætter blok 2 til done før blok 1, hvilket jo indikere at der er noget ravende galt. Resten af de resterende 8 blokke kommer rigtig nok.

Her er lidt kode: (den modificerede kode af det opringelige script fra dynamicdrive.com)

    var locationAfterPreload = "o3c.asp" // URL of the page after preload finishes
    var lengthOfPreloadBar = 240 // Length of preload bar (in pixels)
    var heightOfPreloadBar = 20 // Height of preload bar (in pixels)
        var yourImages = new Array(
        <% set rs = Conn.Execute("SELECT * FROM preload")
          do while not rs.eof %>
          <%="""" & Replace(rs("preloadPath"), "{LANG}", returnLang) & """"%>
        <% rs.MoveNext
          if not rs.eof then
            Response.Write ","
          end if
          loop %>
        );

// Do not modify anything beyond this point!
if (document.images) {
    var dots = new Array()
    dots[0] = new Image(24,20)
    dots[0].src = "images/prgnone.gif" // default preloadbar color (note: You can substitute it with your image, but it has to be 1x1 size)
    dots[1] = new Image(24,20)
    dots[1].src = "graphics/progressbar.gif" // color of bar as preloading progresses (same note as above)
    var preImages = new Array(),coverage = Math.floor(lengthOfPreloadBar/yourImages.length),currCount = 0
    var loaded = new Array(),i,covered,timerID
    var leftOverWidth = lengthOfPreloadBar%coverage
}
function loadImages() {
    for (i = 0; i < yourImages.length; i++) {
        preImages[i] = new Image()
        preImages[i].src = yourImages[i]
    }
    for (i = 0; i < preImages.length; i++) {
        loaded[i] = false
    }
    checkLoad()
}
function checkLoad() {
    if (currCount == preImages.length) {
        //location.replace(locationAfterPreload)
        return
    }
    for (i = 0; i <= preImages.length; i++) {
          if (loaded[i] == false && preImages[i].complete) {
          loaded[i] = true;
         
          imgrange = (i/(preImages.length/10))-1;
          if (imgrange <= 0){
            imgrange += 1;
          }

          eval("document.img" + Math.round(imgrange) + ".src=dots[1].src");
         
          currCount++
          }
        }
  timerID = setTimeout("checkLoad()",10)
}


BODY-del


          if (document.images) {
        var preloadBar = ''
        //var runover = yourImages.length-1;
        var runover = 9
            for (i = 0; i < runover; i++) {
              preloadBar += '<img src="' + dots[0].src + '" width="24" height="' + heightOfPreloadBar + '" name="img' + i + '" align="absmiddle">';
            }
            preloadBar += '<img src="' + dots[0].src + '" width="24" " height="' + heightOfPreloadBar + '" name="img' + (runover) + '" align="absmiddle">';
            document.write(preloadBar);
            loadImages();
          }


er der en skrap javascripter der lige kan løse den?
Avatar billede olebole Juniormester
25. marts 2004 - 19:49 #1
<ole>

En preloadbar bruger man somregel, fordi det tager tid at downloade nogle billeder, brugeren skal se. Problemet er bare, at det tager ekstra tid at afvikle en preloadbar, hvorfor brugeren skal vente endnu længere på at se 'sine' billeder.
Er der f.eks. 24 billeder, der skal preloades, foretages 24 ekstra kald til serveren, hvis der bruges en grafik-preloadbar.
Det er formodentlig derfor, man har valgt at bruge det mindst tænkelige billede (en 1x1px gif) og så strække den med height og width til den ønskede størrelse. Man prøver sikkert at optimere på de måder, det er muligt  :)

/mvh
</bole>
Avatar billede fixxxer Nybegynder
26. marts 2004 - 10:50 #2
det er muligt, men nu er siden i alle aspekter meget tung, så en lille grafik på 24x20, som skal lave 10 kald til serveren vil ikke gøre byrden meget større. denne side prioritere grafik og udseende frem for loadtid

kan mit problem løses eller ej
Avatar billede fixxxer Nybegynder
01. april 2004 - 06:55 #3
Jeg valgte at sætte første blok til completed, for så ledes at komme uden om mit problem, uden at skulle omskrive min kode.
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