Kalle_Worms: setInterval verschieden lang bei IE und NS

Hallöle,

ich möchte eine Grafik von links nach rechts über den Bildschirm laufen lassen, indem ich den linken Rand mehrmals um 1% erhöhe.

Die Funktion zur Neupositionierung rufe ich mit setInterval alle 5 Millisekunden auf. Demnach müsste die Grafik in etwa 1 sec. am Ziel sein.

Der IE machts korrekt, während NS und FF die vierfache Zeit benötigen.

Wenn ich die Zeit auf 50 ms hochsetze, läufts gleichmäßig etwa 4 sec in dreien (wie heisst beiden +1 ?) Browsern.

Habe den Verdacht, dass NS und FF nur recht große Millisekunden mögen, ist der Bug bekannt oder habe ich was falsch gemacht?

Hier das Script:

var start_x =  0; // Rand in Prozent
var tempo   = 50; // Millisekunden
var aktiv, diff;

function Move(name, ziel_x) {
  if ( aktiv ) window.clearInterval(aktiv);
  window.document.images[name].style.visibility = "visible";
  if ( start_x != ziel_x && ziel_x >= 0 && ziel_x <= 100) {
    if ( start_x < ziel_x ) diff = 1; else diff = -1;
    aktiv = window.setInterval("doMove('"+name+"',"+ziel_x+")",tempo);
  }
}
function doMove(name, ziel_x) {
  // OHNE RUNDUNG UNGENAU WG. HEXAZAHL:
  start_x = Math.round(( start_x +diff )* 100 ) / 100;
  window.document.images[name].style.marginLeft = start_x+'%';
  if (( start_x == ziel_x ) ) {
    window.clearInterval(aktiv);
  }
}
...
<body onLoad="javascript:Move('bild',90)">

Danke schon mal für Tipps.
Kalle

  1. Der IE machts korrekt, während NS und FF die vierfache Zeit benötigen.

    Was mir bei NS und FF gerade auffällt: Die Seite hat ein <iframe> und dessen Textinhalt zittert, wenn die Grafik läuft.

    Kann es sein, dass jedesmal die Seite oder der (unbeteiligte) <iframe>  komplett neu aufgebaut wird ?

  2. Hallo Kalle,

    Die Funktion zur Neupositionierung rufe ich mit setInterval alle 5 Millisekunden auf. Demnach müsste die Grafik in etwa 1 sec. am Ziel sein.

    Der IE machts korrekt, während NS und FF die vierfache Zeit benötigen.

    Wenn ich die Zeit auf 50 ms hochsetze, läufts gleichmäßig etwa 4 sec in dreien (wie heisst beiden +1 ?) Browsern.

    Icch verstehe gar nicht, warum du die CPU deines Rechners derart strapazieren willst, wenn ein menschliches Auge ohnehin Bilder die im Abstand einer 24stel Sekunde ablaufen (Kinofilm), bereits als flüssige Bewegung wahrnimmt.

    Versetze lieber dein Element in größeren Pixel-Schrittweiten, aber geh auf keinen Fall unter 40 Millisekunden im Intervall, das bringt doch gar nichts!

    Gruß Gernot

  3. 你好 Kalle_Worms,

    Die Funktion zur Neupositionierung rufe ich mit setInterval alle 5
    Millisekunden auf. Demnach müsste die Grafik in etwa 1 sec. am Ziel sein.

    Der IE machts korrekt, während NS und FF die vierfache Zeit benötigen.

    Ja, das kann schon sein. Die Aufloesung bei den Browsern ist sehr
    unterschiedlich. Sinnvoller waere es deshalb, 50ms zu nehmen und stattdessen
    ein paar Pixel mehr zu addieren. 50ms macht pro Sekunde 25 Bilder, das
    reicht fuer das menschliche Auge dicke aus -- wenn es noch ruckelig aussieht
    kannst du auf 30ms reduzieren oder aber die Pixel-Schritte kleiner machen,
    weiter herunter als 30ms solltest aber nicht gehen. Das kostet nur CPU-Zeit.

    再见,
     CK

    --
    Beware Evildoers for my deed is done and every little damsel in distress will be shelted!
    http://wwwtech.de/
    1. Hi,

      50ms macht pro Sekunde 25 Bilder, das

      1000ms / 50ms = ? ;-)

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      1. 你好 MudGuard,

        50ms macht pro Sekunde 25 Bilder, das

        1000ms / 50ms = ? ;-)

        Ehm, ja, ich meinte natuerlich 40ms. Danke :)

        再见,
         CK

        --
        Echte Hacker benutzen Aexte. (Thomas Walter in de.org.ccc)
        http://wwwtech.de/
        1. Hi,

          Ehm, ja, ich meinte natuerlich 40ms. Danke :)

          Ich war schon am Überlegen, ob Du evtl. in der Stadt mit dem schiefen Turm wohnst ;-)

          cu,
          Andreas

          --
          Warum nennt sich Andreas hier MudGuard?
          Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  4. Hallo,

    ... in dreien (wie heisst beiden +1 ?) Browsern.

    in den drei Browsern.

    Habe den Verdacht, dass NS und FF nur recht große Millisekunden mögen, ist der Bug bekannt oder habe ich was falsch gemacht?

    5 msec ist sehr kurz. Ich dachte bisher immer, die PC-Uhr läuft im 10 msec-Takt.
    Ich habe bei Mozilla/Firefox die Erfahrung gemacht, dass sie beim "hantieren im DOM-Baum", also z.B. Erzeugen und positionieren von Elementen viel langsamer sind, als der IE. Beides könnten Gründe für die Abweichung sein. Aber wie die anderen schon schrieben, 20 bis 30 Schritte pro Sekunde sind sicher genug.

    Gruß, Jürgen