Avatar billede syswatch Novice
20. juni 2007 - 10:35 Der er 7 kommentarer og
1 løsning

Fjerne preload fra slideshow

Hejsa...
Jeg har følgende kode som jeg bruger til et slideshow, og det fungere som sådan okay, men fra man går ind på siden går der lidt tid inden den bliver vist da den først skal loade alle billederne i showet.
Kan man på nogen måde lave det sådan at den kun loader et billede af gangen mens den venter på næste billede ?

Min kode:
<script language="javascript" type="text/javascript">
var slideShowSpeed = 2000
var crossFadeDuration = 3
var Pic = new Array()
<?php
include("galdbcon.php");
$query2 = "select * FROM galleries WHERE domain=4 AND synlig=1 ORDER BY id DESC LIMIT 1";
$result2 = mysql_query($query2) or die(mysql_error());

if($row2 = mysql_fetch_array($result2)) {
     
$path = "/home/www/galleri/".$row2[id]."/";
$handle = opendir($path);
while (($fil = readdir($handle)) !== false) {
    if ($fil != "." && $fil != ".." && substr(strtolower($fil),-3) == "jpg") {
        $images1[] = $fil;
    }
}
closedir($handle);
$bib = $row2[id];
global $bib;
$firstpic1 = $images1[0];
global $firstpic1;
shuffle($images1);
$arraysize = 16;
if (count($images1) < 15) {
$arraysize = count($images1);
}

for ($i=0; $i<$arraysize; $i++) {   
      print "Pic[".$i."] = '/ugalleri/".$bib."/".$images1[$i]."'\n";
}
}
?>

var t
var j = 0
var p = Pic.length

var preLoad = new Array()
for (i = 0; i < p; i++){
  preLoad[i] = new Image()
  preLoad[i].src = Pic[i]
}

function runSlideShow(){
  if (document.all){
      document.images.SlideShow.style.filter="blendTrans(duration=2)"
      document.images.SlideShow.style.filter="blendTrans(duration=crossFadeDuration)"
      document.images.SlideShow.filters.blendTrans.Apply()     
  }
  document.images.SlideShow.src = preLoad[j].src
  if (document.all){
      document.images.SlideShow.filters.blendTrans.Play()
  }
  j = j + 1
  if (j > (p-1)) j=0
  t = setTimeout('runSlideShow()', slideShowSpeed)
}
</script>
Avatar billede roenving Novice
20. juni 2007 - 16:00 #1
Ændr denne linje:

var crossFadeDuration = 3
var Pic = new Array()
<?php
include("galdbcon.php");

-- til:

var crossFadeDuration = 3
var preLoad = new Array()
<?php
include("galdbcon.php");

-------------------

-- og denne:

for ($i=0; $i<$arraysize; $i++) {   
      print "Pic[".$i."] = '/ugalleri/".$bib."/".$images1[$i]."'\n";
}

-- til:

for ($i=0; $i<$arraysize; $i++) {   
      print "preLoad[".$i."] = '/ugalleri/".$bib."/".$images1[$i]."'\n";
}

--------------------

-- og disse:

var j = 0
var p = Pic.length

var preLoad = new Array()
for (i = 0; i < p; i++){
  preLoad[i] = new Image()
  preLoad[i].src = Pic[i]
}

function runSlideShow(){
  if (document.all){

-- til:

var j = 0
var p = preLoad.length

function runSlideShow(){
  if (document.all){
Avatar billede syswatch Novice
21. juni 2007 - 07:45 #2
roenving, tak for dit forsøg, men det ser ikke ud til at virke. Det er kun startbilledet den viser og derefter kan den ikke vise resten af billederne. Der må være en fejl et sted, men kan ikke lige gennemskue hvor...
Her er koden som den ser ud nu:

<script language="javascript" type="text/javascript">
var slideShowSpeed = 2000
var crossFadeDuration = 3
var preLoad = new Array()
<?php
include("galdbcon.php");
$query2 = "select * FROM galleries WHERE domain=4 AND synlig=1 ORDER BY id DESC LIMIT 1";
$result2 = mysql_query($query2) or die(mysql_error());

if($row2 = mysql_fetch_array($result2)) {
     
$path = "/home/www/galleri/".$row2[id]."/";
$handle = opendir($path);
while (($fil = readdir($handle)) !== false) {
    if ($fil != "." && $fil != ".." && substr(strtolower($fil),-3) == "jpg") {
        $images1[] = $fil;
    }
}
closedir($handle);
$bib = $row2[id];
global $bib;
$firstpic1 = $images1[0];
global $firstpic1;
shuffle($images1);
$arraysize = 16;
if (count($images1) < 15) {
$arraysize = count($images1);
}

for ($i=0; $i<$arraysize; $i++) {   
      print "preLoad[".$i."] = '/ugalleri/".$bib."/".$images1[$i]."'\n";
}
}
?>

var t
var j = 0
var p = preLoad.length

function runSlideShow(){
  if (document.all){
      document.images.SlideShow.style.filter="blendTrans(duration=2)"
      document.images.SlideShow.style.filter="blendTrans(duration=crossFadeDuration)"
      document.images.SlideShow.filters.blendTrans.Apply()     
  }
  document.images.SlideShow.src = preLoad[j].src
  if (document.all){
      document.images.SlideShow.filters.blendTrans.Play()
  }
  j = j + 1
  if (j > (p-1)) j=0
  t = setTimeout('runSlideShow()', slideShowSpeed)
}
</script>
Avatar billede roenving Novice
22. juni 2007 - 01:15 #3
Kan du linke til et live eksempel ?-)
Avatar billede syswatch Novice
22. juni 2007 - 09:48 #4
roenving: www.mebsen.dk
Avatar billede roenving Novice
22. juni 2007 - 15:29 #5
Argh, den havde jeg overset:

  document.images.SlideShow.src = preLoad[j];

-- cirka midt i koden !-)
Avatar billede syswatch Novice
19. juli 2007 - 07:49 #6
roenving, smider du ikke lige et svar.
Avatar billede roenving Novice
21. juli 2007 - 05:22 #7
Velbekomme '-)
Avatar billede roenving Novice
22. juli 2007 - 02:21 #8
-- og tak 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