Avatar billede kolme Nybegynder
07. november 2000 - 16:04 Der er 4 kommentarer og
1 løsning

Opdatere billedet.

Hej Eksperter,
En ven og jeg har en idé om at vi vil lave et JS, hvor man opdaterer et billede (1 pr 2 sek). Dette kunne sagtens laves i ren HTML, men der kommer det problem at det allerede opdaterede billede forsvinder når det næste billede skal hentes - Det gør at der kommer et tomt stykke imellem opdateringer, og det vil jeg gerne undgå...Er der nogen der kan hjælpe?
Jeg er meget lidt inde i JS, så det må gerne være udførligt skrevet.
Avatar billede dudal Nybegynder
07. november 2000 - 18:34 #1
Du kan evt. preloade dine billeder.

Se her:
http://www.builder.dk/artikler/article.asp?Id=45

Mvh
Jesper
Avatar billede jakoba Nybegynder
07. november 2000 - 22:25 #2
Dudal\'d svar er rigtigt og nødvendigt men kan forbedres lidt.

Preload billederne.

Men hvis billederne er mere end thumbnails kan de sagtens tage mere end 2 sekunder hver at loade.

Du har formentlig allerede lavet den javascript løkke der skal vise billederne. I retning af:

function getNextPic {
    setImage(billedX.src);                            // vis billedeX
    billedX = *næste billede der skal vises*    // indstil billedX til næste billede
    ID = setTimeout(\'getNextPic()\',2000)        // vent 2 sekunder før neste billedskift
}; //end getNextPic()

for at få de 2 sekunders wait.

I det Image objekt du preloader billederne ind i er der en variabel \"complete\" der bliver true når billedet er færdigt med at loade.

Så jeg vil foreslå du laver løkken om til noget i retning af

function getNextPic {
  if (billedeX.complete) {      // er billedet loaded?
      setImage(billedX.src);                            // JA  vis billedeX
      billedX = *næste billede der skal vises*    //      indstil billedX til næste billede
    ID = setTimeout(\'getNextPic()\',2000)        //      vent 2 sekunder før neste billedskift
  } else {
    ID = setTimeout(\'getNextPic()\',500)          // NEJ vent lidt og prøv igen med samme billed
  }
}; //end getNextPic()

getNextPic(); // starter billedskifteren (variable skal være defineret først)
     
Så slipper du også for at starte løkken med et onLoad kald. Billederne skifter aldrig før de er klar.

Men hvis et af billederne mangler på serveren stopper billedudskiftningen der.
Avatar billede kolme Nybegynder
08. november 2000 - 17:16 #3
Hvad skal variablen defineres som? Jeg er som sagt meget lidt inde i JS.
Avatar billede jakoba Nybegynder
08. november 2000 - 21:01 #4
Ok. Her et et komplet eksempel:

Oppe i head indsættes:

<script language=\"javascript\">

var ID = 0;                  // bruges af setTimeout() funktionen
var nesteBillede = 1;      // nummer næste billede der skal vises

var picArray = new Array ( new Image(),
                                    new Image(),
                                    new Image(),
                                    new Image() ); // plads til 4 preloadede billeder

picArray[0].src = \"billed_nr_1_url\";          // start preload af billederne
picArray[1].src = \"billed_nr_2_url\";
picArray[2].src = \"billed_nr_3_url\";
picArray[3].src = \"billed_nr_4_url\";

function getNextPic() {
      if ( picArray[nesteBillede].complete) {      // er billedet loaded?
          document.images.dit_billed_navn.src = picArray[nesteBillede].src; // JA  vis billedeX
          nesteBillede = nesteBillede>=3)?0:nesteBillede+1                //      forbered for næste billede
        ID = setTimeout(\'getNextPic()\',2000)                          //      vent 2 sekunder før neste billedskift
      } else {
        ID = setTimeout(\'getNextPic()\',500)          // NEJ vent lidt og prøv igen med samme billed
      }
  }; //end getNextPic()

</script>


og nede i body skriver du:

<img src=\"billed_nr_1_url\" name=\"dit_billed_navn\">
<script language=\"javascript\">
getNextPic();    // starter billedskiftningen
</script>
Avatar billede jakoba Nybegynder
08. november 2000 - 21:05 #5
Hovsa jeg glemte korrekte parenteser i en af linierne:
Her: ---------------------V------------------------V-----------------V

          nesteBillede = (nesteBillede>=3)?0:(nesteBillede+1)                //forbered for næste billede


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