dr.colossos: Regen ohne performance Einbrüche einbauen?

Beitrag lesen

Hi,

ja genau, es ist ja auch für so ein spiel, hehe. nur wie mache ich das mit der großen grafik, das hört sich interessant an.

Tja ... so?

<script>
  // haelt Referenz auf das Bild
  var img = null;
  // initialisiert das ganze
  function get_moving()
  {
   // Referenz nur einmal holen
   if(img == null)
    img = document.getElementById('img');
   // jede Millisekunde die move-Operation aufrufen
   // evtl. weniger oft aufrufen, dafuer weiter verschieben, z.B. jede 10 Millisekunde, dafuer um 50 Pixel verschieben ..?
   window.setInterval("move_background()", 1);
  }

// move-Operation
  function move_background()
  {
   // Abstand von oben ermitteln
   marginTop = parseInt(img.style.marginTop);
   // ganz runter gescrolled => wieder noch oben setzen
   if(marginTop == 0)
    marginTop = -1920;
   // pro Aufruf 10 Pixel nach unten ziehen
   img.style.marginTop = (marginTop + 10) + 'px';
  }
 </script>
 </head>
 <!-- bei onload initialisieren -->
 <body onload="get_moving();">
 <!-- ein container, muss nicht sein, is aber besser, sag ich mal, da sich sonst das "margin-top:-1920px;" auf den body bezieht ... ginge auch, aber mei ... -->
 <div id="container" style="border:red solid 2px; width:640px; height:480px; overflow:hidden; margin-left:200px;">
  <!-- das Bild, das -1920 (= -[480 * 4]) Pixel nach oben verschoben ist -->
  <img id="img" src="rain.jpg" style="margin-top:-1920px;">
 <div>
 </body>
</html>

Ich habe dein Site genommen, eine Screenshot gemacht, und das Bild 4 mal untereinander kopiert.

Das kann man noch alles schoener machen, aber vom Prinzip her funktionierts mal.

Der aufruf ist der Prozesso-Killer, wes wegen es auch ruckeln kann ...

window.setInterval("move_background()", X);

An dem X, und an dem ...

img.style.marginTop = (marginTop + Y) + 'px';

... Y musst schrauben, dass es fluessig und huebsch is.

Viel Erfolg!