Avatar billede reino Nybegynder
22. maj 2008 - 15:18 Der er 3 kommentarer og
2 løsninger

Randomize - fso

Hej

Har følgende script som tager nogle billeder fra en mappe og laver et diasshow ud af disse. Men mit problem er at som scriptet pt er tager det billederne i rækkefølge, hvis jeg nu gerne vil have billederne til at randomize, how to do ?, har prøvet at benytte randomize forskellige steder uden held. Scriptet er som følger:


<script type="text/javascript">
var slideShowSpeed = 5000
var crossFadeDuration = 5
var Pic = new Array()

Pic[0] = '../gfx/top/1.jpg'
Pic[1] = '../gfx/top/5.jpg'
Pic[2] = '../gfx/top/6.jpg'

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 w13 Novice
22. maj 2008 - 15:30 #1
Der vil skulle en del mere til end blot at sætte randomize ind. Jeg kan prøve at se, om jeg kan finde en funktion, der blander et array.

I øvrigt er den kode, du viser, ren JavaScript - dvs. intet ASP.
Og den er temmelig forældet. Du kan ændre den til dette i stedet, hvis du vil have den up-to-date:
**********************************
<script type="text/javascript">
var slideShowSpeed=5000;
var crossFadeDuration=5;
var Pic=new Array();

Pic[0]='../gfx/top/1.jpg';
Pic[1]='../gfx/top/5.jpg';
Pic[2]='../gfx/top/6.jpg';

var j=0,p=Pic.length;

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

function runSlideShow(){
  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;
  document.images.SlideShow.filters.blendTrans.Play();

  j++;
  if(j>p-1)j=0;
  window.setTimeout("runSlideShow()",slideShowSpeed);
}
</script>
Avatar billede w13 Novice
22. maj 2008 - 15:34 #2
function randOrd(){
    return Math.round(Math.random())-0.5
}

<script type="text/javascript">
var slideShowSpeed=5000;
var crossFadeDuration=5;

var Pic=new Array();
Pic[0]='../gfx/top/1.jpg';
Pic[1]='../gfx/top/5.jpg';
Pic[2]='../gfx/top/6.jpg';
Pic.sort(Math.round(Math.random())-0.5);

var j=0,p=Pic.length;

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

function runSlideShow(){
  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.setAttribute("src",preLoad[j].getAttribute("src"));
  document.images.SlideShow.filters.blendTrans.Play();

  j++;
  if(j>p-1)j=0;
  window.setTimeout("runSlideShow()",slideShowSpeed);
}
</script>
Avatar billede w13 Novice
22. maj 2008 - 15:36 #3
Hov, følgende burde gøre tricket:
*********************************
<script type="text/javascript">
function rndSort(){
    return Math.round(Math.random())-0.5
}

var slideShowSpeed=5000;
var crossFadeDuration=5;

var Pic=new Array();
Pic[0]='../gfx/top/1.jpg';
Pic[1]='../gfx/top/5.jpg';
Pic[2]='../gfx/top/6.jpg';
Pic.sort(rndSort);

var j=0,p=Pic.length;

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

function runSlideShow(){
  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.setAttribute("src",preLoad[j].getAttribute("src"));
  document.images.SlideShow.filters.blendTrans.Play();

  j++;
  if(j>p-1)j=0;
  window.setTimeout("runSlideShow()",slideShowSpeed);
}
</script>
Avatar billede reino Nybegynder
02. juni 2008 - 13:14 #4
hey virkede :D takker mange gange
Avatar billede w13 Novice
02. juni 2008 - 13:59 #5
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
Kurser inden for grundlæggende programmering

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