Markus P.: auf ein bestimmtes Ereignis warten ?

Hi ,ich bins wieder mal

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. Hier nun das normale unveränderte Script :
<img src="arena.gif" name="arena" width=550 height=367>
<script language="JavaScript">

var b = new Array();

b[0] = new Image(); 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;
   document.images[0].src = b[i].src;
    i = i + 1;

window.setTimeout("Animation()",4500);

}
window.setTimeout("Animation()",4500);

</script>

  1. P.S. ich weis leider nicht wie ich es am besten mit document.images.length kombinieren kann .

    1. P.S. ich weis leider nicht wie ich es am besten mit document.images.length kombinieren kann .

      kannst eigentlich nicht einfach abfragen, wenn der wert == b.length ist?
      du hast jetzt 13 bilder...also einfach, wenn das 13. (= b.length) angezeigt wird, sollten ja alle geladen sein, oder!?!

      schöne, cu
       capior

      1. Das is ja das Problem ,das Script läuft einmal durch ,und wenn ich jetzt angenommen if (document.blabla...) geschrieben habe ,gilt das ja nur EIN mal ,nämlich in dem Moment wo diese Stelle im Ablauf passiert .Ich hab das schon mit einer Schleife versucht ,aber das hat dann auch nicht so ganz geklappt, weil ich einfach nicht weis an welcher Stelle im Skript ich etwas einsetzen muss.

        1. Das is ja das Problem ,das Script läuft einmal durch ,und wenn ich jetzt angenommen if (document.blabla...) geschrieben habe ,gilt das ja nur EIN mal ,nämlich in dem Moment wo diese Stelle im Ablauf passiert .Ich hab das schon mit einer Schleife versucht ,aber das hat dann auch nicht so ganz geklappt, weil ich einfach nicht weis an welcher Stelle im Skript ich etwas einsetzen muss.

          hi

          sorry, aber ich verstehe das ganze nicht ganz
          du hast ein bild ...arena.gif. dieses ersetzst du alle 4.5 sekunden durch ein anderes (insgesamt 13).
          wan sind dann alle bilder geladen?
          ich denke wenn das 13. bild complete = true ist, oder!?!

          ich versteh das emu so

          schöne, cu
            capior

          1. Ich hab das Ganze jetzt so zusammengesbastelt ,aber es ist so ,daß er mir  document.images[13].complete is kein objekt hinschreibt ?
            <img src="soundsys.gif" name="Bild" width=550 height=367>
            <script language="JavaScript">

            var b = new Array();

            b[0] = new Image(); 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 Warten()
            {
            if (document.images[13].complete == true)
                {
              Animation()
                }
            }
            function Animation()
                  {
               if(i > 13) i = 0;
               document.images[0].src = b[i].src;
                i = i + 1;

            window.setTimeout("Animation()",4500);
                  }

            Warten()

            </script>

            1. übrigens ,wenn ich mit document.images.length mal abfrage wie viele Grafiken er erkennt ,schreibt er mir 1 hin ,da nur im body tag 1ne Grafik drinsteht .Deswegen funktioniert das dann bei mir logischerweise auch nicht wenn ich nach Nr13 frage . Aber irgendeinen Trick muss es hier geben ,da bin ich sicher.

              1. hmmm ,ich weis zwar nicht ob es so funktioniert ,da meine Ineternetverbindung zimelich schnell ist ,aber ich glaube das müsste es jetzt sein. Falls es jmd. weniger umständlich weis, bin ich für Vorschläge immer dankbar.
                function Warten()
                {
                if (document.Bild.complete == true)
                    {
                Animation()
                    }
                else
                  {
                  window.setTimeout("Warten()",500)
                  }
                }
                function Animation()
                      {
                   if(i > 13) i = 0;
                   document.images[0].src = b[i].src;
                    i = i + 1;

                window.setTimeout("Animation()",4500);
                      }

                Warten()

              2. function Animation()
                      {
                   if(i > 13) i = 0;
                   if (i == 13) alert("hoho");
                   document.images[0].src = b[i].src;
                    i = i + 1;

                window.setTimeout("Animation()",4500);
                      }

  2. 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