@NHI
Was hat ein Fenster und ein Hintergrund gemeinsam? Die Position im Raum und die Größe.
Was soll also passieren, wenn ein Bild, sagen wir, von Rechts nach Links gleiten soll? Richtig, seine Position muss sich pro Zeiteinheit um ein Weg verändern. Nun hast du zwei Bilder, welche die Landschaft im Hintergrund simulieren sollen. Was soll also geschehen? Ganz genau, ein Bild soll genau hinter dem anderen aufgebaut werden, beide sollen mit gleicher Geschwindigkeit pro Zeiteinheit durch den Raum gleiten und wenn das erste Bild nicht mehr sichtbar ist, soll es sich, genauer gesagt die Position des Bildes, soweit verändern, dass es an das zweite Bild anschließt, um wieder in das Fenster hinein geschoben zu werden.
Dazu ein Bild, siehe unten.
Du hast also ein Zeichenbrett, welches beide Bilder als Objekte besitzt und diese horizontal von Rechts nach Links unermüdlich hintereinanderreiht und nachschiebt. Dazu ist, wie bereits erwähnt ein Weg und eine Zeiteinheit notwendig. Beide bekommst du durch die Klasse Timer(util). Mit der Methode
scheduleAtFixedRate(TimerTask, delay, period)
kannst du die Zeitachse bestimmen. Nun brauchst du noch den Weg. Jedes Bild hat eine eigene Weg-Variable und diese wird je nach Startposition des Bildes initialisiert. Dabei soll diese sich pro Zeiteinheit um ein Wert verändern und wenn das Bild ganz aus dem sichtbaren Fenster verschwunden ist, auf den Ursprungswert zurückgesetzt werden(hinten einreihen). Zeichnen kannst du es in der
paintComponent(Graphics g)
Methode mit g.drawImage(image, positionX, positionY, ImageObserver);