Calocybe: auf ein bestimmtes Ereignis warten ?

Beitrag lesen

Moin!

Ich habe dieses script ,das alle 4.5 Sekunden ein anderes Bild anzeigt .Nun gut es funktioniert tadellos ,aber ich will irgendwie eine Funktion einbauen ,die solange auf die Ausführung des Scripts wartet, bis alle Bilder geladen sind .Der Schlüssel liegt sicher in der .complete Eigenschaft ,aber wie kann ich das am besten hier verwenden ?.Für jede Idee wäre ich sehr dankbar.

(Erstmal der Hinweis, dass Du eine sehr eigenwillige Art der Interpunktion hast. Normaler- und sinnvollerweise laesst man ein Leerzeichen NACH dem jeweiligen Komma, Punkt, Fragezeichen usw., nicht davor.)

In der Tat waere .complete hilfreich, allerdings funktioniert dies meines Wissens in vielen Browsern nicht oder nicht zuverlaessig. Aber falls es fuer Dich nur auf einem Browser laufen muss, von dem Du weisst, dass es funktioniert, dann kannst Du zusammen mit dem onLoad-Event erreichen, was Du willst:

var b = new Array();

function AlleGeladen() {
  var i;
  for (i=0; i<b.length; i++)
    if (!b[i].complete) return false;
  return true;
}

function BildGeladen() {
  var i;
  if (AlleGeladen()) {
    for (i=0; i<b.length; i++)
      b[i].onload = null;         // alle onload-Handler deaktivieren
    window.setTimeout("Animation()",4500);  // Animation starten
  }
}

b[0] = new Image(); b[0].onload = ; b[0].src = "soundsys.gif";
b[1] = new Image(); b[1].src = "soundsys2.gif";
b[2] = new Image(); b[2].src = "tanzen.gif";
b[3] = new Image(); b[3].src = "tanzen2.gif";
b[4] = new Image(); b[4].src = "bullen.gif";
b[5] = new Image(); b[5].src = "bullen2.gif";
b[6] = new Image(); b[6].src = "bullen3.gif";
b[7] = new Image(); b[7].src = "bullen4.gif";
b[8] = new Image(); b[8].src = "bullen5.gif";
b[9] = new Image(); b[9].src = "bullen6.gif";
b[10] = new Image(); b[10].src = "bullen7.gif";
b[11] = new Image(); b[11].src = "bullen8.gif"
b[12] = new Image(); b[12].src = "leute.gif";
b[13] = new Image(); b[13].src = "arena.gif"
var i = 0;

function Animation()
{
   if(i > 13) i = 0;

Sollte es nicht if (i >= 13)  heissen?

document.images[0].src = b[i].src;
    i = i + 1;
  window.setTimeout("Animation()",4500);
}

/* nicht mehr:  window.setTimeout("Animation()",4500);  */

Musst halt mal im Forumsarchiv schauen, ob Du rausfindest, welche Browser bezueglich .complete buggy sind. Wenn Du .complete nicht verwenden kannst, kannst Du vielleicht auch einfach mitzaehlen, wie oft BildGeaden aufgerufen wurde. Mmh... eigentlich ist das ja sogar viel einfacher. Naja, mach mal.

HTH, So long