Avatar billede gudnason Nybegynder
25. november 2005 - 17:59 Der er 4 kommentarer og
1 løsning

tilfældig billedevælger script problem

Hej.


Jeg er ved at lave en side med LATTERLIGT mange baggrundsbilleder som tilfældigt vælges, og så skiftes hvert 30. sekund.

Problemet er at siden er alt for lang tid om at starte. Som om at den henter alle billederne på een gang (der er 200), hvilket selvfølgelig ikke er optimalt.

Hvad gør jeg forkert? Hvad mangler jeg i koden sådan at den loader eet billede ad gangen, og så de øvrige når der er brug for dem? Dvs. efter 30 sekunder eller ved refresh.

linket til siden er http://legionsudan.com/index4.html


Jeg troede det ville hjælpe at dele de tilfældige billeder op i serier på 10 ad gangen, men det hjalp ikke.

js filerne ser sådan ud: http://legionsudan.com/img2.01.js

(og dem er der 20 af, der bliver tilfældigt valgt)




Jeg håber der er nogen der ved hvad der går galt!


mvh,

Gudnason
Avatar billede skovenborg Nybegynder
26. november 2005 - 15:02 #1
Det er meget normalt at preloade sine billeder, når man laver den slags scripts, netop for at undgå billederne løbende skal hentes (og derfor ikke altid nås at vises).

Nu da du helt vil undgå dette, kan du med fordel ændre scriptet til:
<script type="text/javascript">
  var arrImg =         [
                    "img2/001.jpg",
                    "img2/002.jpg",
                    "img2/003.jpg",
                    "img2/004.jpg",
                    "img2/005.jpg",
                    "img2/006.jpg",
                    "img2/007.jpg",
                    "img2/008.jpg",
                    "img2/009.jpg",
                    "img2/010.jpg"
                ];


var nextImg = 0;
var preloadArr = [];
function setTabBg2(){
  var theTab = document.getElementById("master2");
  theTab.style.backgroundImage="url("+arrImg[nextImg]+")";
  nextImg++;
  if(nextImg>=arrImg.length){
    nextImg=0;
  }
  preloadNext();
}
function preloadNext() {
    if (!preloadArr[nextImg]) {
      preloadArr[nextImg] = new Image();
      preloadArr[nextImg].src = arrImg[nextImg];
    }
}
preloadNext();
var timer = setInterval(setTabBg2, 30000);
</script>

Problemet for dig lå i rotate()-funktionen som lige skulle preloade alle billederne først. Det tager jo tid, så istedet har jeg lavet en preloadNext-funktion, som preloader det næste billede i rækken (såfremt det ikke allerede er preloadet ;-)
Avatar billede gudnason Nybegynder
28. november 2005 - 11:19 #2
Hey

Tak for hjælpen, det var et skridt i den rigtigt retning; eet billede ad gangen.

men når jeg fjerner rotate()-funktionen vælger den billederne i en rækkefølge, right?
Hvordan får jeg rotate() og preloadNext kædet sammen?


Jeg synes jeg har prøvet lidt af hvert... men uden held :'(



endnu en gang tak for hjælpen alligevel, nu dropper jeg den hjernedøde tanke at tilfældigt vælge et tilfældigt sript (dobbeltarbejde).


G
Avatar billede skovenborg Nybegynder
28. november 2005 - 12:00 #3
Ja, jeg glemte da den lile detalje, at det skulle være et tilfældigt billede ;-)

Det kan til gengæld løses med en lille "vælg tilfældigt index"-funktion:
<script type="text/javascript">
  var arrImg =        [
                    "img2/001.jpg",
                    "img2/002.jpg",
                    "img2/003.jpg",
                    "img2/004.jpg",
                    "img2/005.jpg",
                    "img2/006.jpg",
                    "img2/007.jpg",
                    "img2/008.jpg",
                    "img2/009.jpg",
                    "img2/010.jpg"
                ];


var nextImg = pickRandomIndex();
var preloadArr = [];
function setTabBg2(){
  var theTab = document.getElementById("master2");
  theTab.style.backgroundImage="url("+arrImg[nextImg]+")";
  nextImg = pickRandomIndex();
  preloadNext();
}
function preloadNext() {
    if (!preloadArr[nextImg]) {
      preloadArr[nextImg] = new Image();
      preloadArr[nextImg].src = arrImg[nextImg];
    }
}

function pickRandomIndex() {
    return Math.floor(Math.random()*arrImg.length);
}
preloadNext();
var timer = setInterval(setTabBg2, 30000);
</script>
Avatar billede gudnason Nybegynder
28. november 2005 - 12:07 #4
wow.. du er et fantastisk menneske!!!

mange mange mange tak.....


love,
Avatar billede skovenborg Nybegynder
28. november 2005 - 12:24 #5
jamen jeg takker ;-)

og smider et svar ved samme lejlighed...
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