Animation funktioniert icht wie sie soll

NHI

Mitglied
Ich habe mich an das Thema der Animation gewagt, ich habe ein bzw. 2 Bilder mit einer grünen wiese und Blauem Himmel und ein paar Hügeln als 2D erstellt. Das Bild soll einfach nur von rechts nach links laufen, zu diesem Zweck habe ich das Bild sozusagen 2 ml ersellt kann mir bitte jemand helfen ?

Danke im Voraus
 

Javinner

Top Contributor
@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);
 

Anhänge

  • LaufendesBild.png
    LaufendesBild.png
    17,6 KB · Aufrufe: 78

NHI

Mitglied
Danke für deine Antwort aber du hast mich leider falsch verstanden das wusste ich alles bereits habe es berreits mit einem Timer und co. umgesetzt ich hatte leider vergessen meinen Quellcode zu posten tut mir Leid ich hatte wie gesagt es so gemacht und umgesetzt nur dass das Bild beim Ausführen wie beschrieben reagiert
 

NHI

Mitglied
Java:
package HindernisslaufPack;

import java.util.Timer;
import java.util.TimerTask;

public class Background {
Timer move;

Background() {
    move = new Timer();
    move.scheduleAtFixedRate(new TimerTask()  {

        @Override
        public void run() {
           
           
           
            if (Var.BackX1 > 9)   {
               
                Var.BackX1 -= 2;
            }
            else Var.BackX1 = 800;
           
           
           

            if (Var.BackX2  > 9)   {
               
                Var.BackX2 -= 2;
            }
            else {
            Var.BackX2 = 800;
            }
           
           
           
           
                       
        }
       
       
       
       
       
       
       
       
       
    }, 0,100);
   
   
   
   
   
}
}
 

NHI

Mitglied
Java:
package HindernisslaufPack;

import java.awt.*;
import javax.swing.*;

public class Draw extends JLabel{
protected void paintComponent(Graphics g) {
   
    super.paintComponent(g);
   
    Graphics2D g2D = (Graphics2D) g;
    g2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
   
    g.drawImage(Var.Background1, 0, Var.BackX1, 800, 600,null);
    g.drawImage(Var.Background2, 0, Var.BackX2, 800, 600,null);
   
    repaint();
   
    Var.BackX1 = 0;
    Var.BackX2 = 800;
   
}
   

}
 

NHI

Mitglied
Java:
package HindernisslaufPack;

import java.awt.Window;

import javax.swing.JFrame;

public class GUI {

    public GUI() {
       
        Var.jf1.setSize(Var.Breite, Var.Höhe);
        Var.jf1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Var.jf1.setLocationRelativeTo(null);
        Var.jf1.setTitle("Hinddernisslauf");
        Var.jf1.requestFocus();
        Var.jf1.setVisible(true);
       
        Draw draw = new Draw();
        draw.setBounds(0,0,Var.Breite,Var.Höhe);
        draw.setVisible(true);
        Var.jf1.add(draw);
       
       
       
       
    }
   
   
   
   
}
 

NHI

Mitglied
Code:
package HindernisslaufPack;
import java.awt.image.*;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFrame;

public class Var {

   
     static JFrame jf1 = new JFrame();
     static int Breite = 800;
    static int Höhe = 600;
   
    static BufferedImage Background1;
    static BufferedImage Background2;
   
    static int BackX1;
    static int BackX2;
   
   
   
   
       
        public Var() {
           
            try {
                Background1  = ImageIO.read(new File ("rsc/GameBackground.png"));
                Background2  = ImageIO.read(new File ("rsc/GameBackground.png"));
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                System.out.println("Datei nicht gefunden");
            }
           
           
        }
   

}
 

NHI

Mitglied
Die Main Klasse spare ich mir einmal, da in dieser nur die Main-Methode ist in der die einzelnen Klassen aufgerufen werden
 

mkdrive2

Mitglied
1) Draw.java sollte so aussehen:
Java:
     // x und y waren vertauscht
     g.drawImage(Var.Background1, Var.BackX1, 0, 800, 600,null);
     g.drawImage(Var.Background2, Var.BackX2, 0, 800, 600,null);
   
     repaint();
   
     //Background.java macht gar nichts, wenn die Werte hier wieder gesetzt werden.
     //Var.BackX1 = 0;
     //Var.BackX2 = 800;

2) In Var.java sollte BackX1 = 0 und BackX2 = 800 gesetzt werden

3) Background.java sollte etwa so aussehen aussehen:
Java:
if (Var.BackX1 > -800)   {
                    Var.BackX1 -= 2;
                } else Var.BackX1 = -2;

                if (Var.BackX2  > 0)   {
                    Var.BackX2 -= 2;
                } else {
                    Var.BackX2 = 798;
                }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K "Animation" funktioniert nur bedingt. Spiele- und Multimedia-Programmierung 8
H Minecraft Casino EinarmigerBandit Animation Spiele- und Multimedia-Programmierung 5
B Animation Spiele- und Multimedia-Programmierung 4
Meeresgott Morph Targets und Skeleton Animation Spiele- und Multimedia-Programmierung 2
J (Libgdx) animation nur einmal in einem Event aufrufen Spiele- und Multimedia-Programmierung 1
K Animation fliegendes JLabel Spiele- und Multimedia-Programmierung 1
R [LWJGL] Skeletal Animation Spiele- und Multimedia-Programmierung 5
F [LWJGL] Skeletal Animation 3D Spiele- und Multimedia-Programmierung 1
R Animation mit Interpolator starten wenn Key pressed Spiele- und Multimedia-Programmierung 0
kaoZ Animation in eigenen Thread auslagern..... Spiele- und Multimedia-Programmierung 1
S Animation zieht "Spur" hinter sich her Spiele- und Multimedia-Programmierung 2
H [ANIMATION] Hintergrundbild nur einmal zeichnen Spiele- und Multimedia-Programmierung 3
A LwJGL - Animation Stockt Spiele- und Multimedia-Programmierung 5
0 Sprung Animation Spiele- und Multimedia-Programmierung 10
M [Java3D] Animation von mehreren Objekten Spiele- und Multimedia-Programmierung 7
C Java3D Interaktion während Animation Spiele- und Multimedia-Programmierung 3
StrikeTom .gif animation als image abspielen Spiele- und Multimedia-Programmierung 2
G [Java3D] Probleme bei Animation Spiele- und Multimedia-Programmierung 4
baddestpoet Animation startet bei gedrückter Taste immer wieder von vorn Spiele- und Multimedia-Programmierung 12
M Animation Spiele- und Multimedia-Programmierung 5
aze Animation an TransformGroup anpassen Spiele- und Multimedia-Programmierung 5
S Animation mit repaint Spiele- und Multimedia-Programmierung 2
W Flüssige Animation Spiele- und Multimedia-Programmierung 8
B Animation durch Button auslösen Spiele- und Multimedia-Programmierung 2
J Animation hinter transparentem Bild auf der GlassPane Spiele- und Multimedia-Programmierung 6
D Problem mit Animation bei Little Fighter Spiele- und Multimedia-Programmierung 5
R Double Buffering in Animation ich bekomms einfach nicht hin? Spiele- und Multimedia-Programmierung 3
G GL4Java Animation erstellen Spiele- und Multimedia-Programmierung 2
T Geschwindigkeit einer Animation aendern Spiele- und Multimedia-Programmierung 6
S 3ds animation einbinden Spiele- und Multimedia-Programmierung 3
A Animation mit jmonkeyengine Spiele- und Multimedia-Programmierung 10
S Gif Animation aus Prog heraus erstellen Spiele- und Multimedia-Programmierung 11
P Pokemon Spiel Funktioniert nicht ? Spiele- und Multimedia-Programmierung 3
D MIDIdevice open funktioniert nicht Spiele- und Multimedia-Programmierung 1
A Kollision funktioniert nicht richtig bei zu schneller Geschwindigkeit des Spielers Spiele- und Multimedia-Programmierung 0
P Teamspeak interface mit JFrame funktioniert nicht Spiele- und Multimedia-Programmierung 3
D Kollision funktioniert unten aber nicht oben Spiele- und Multimedia-Programmierung 4
D Java Bild bewegen funktioniert nicht Spiele- und Multimedia-Programmierung 8
Damtonix Gameloop funktioniert nicht! Spiele- und Multimedia-Programmierung 6
temi libGDX Box2d ApplyTorque() funktioniert nicht Spiele- und Multimedia-Programmierung 1
M KeyListener funktioniert nicht während Timer läuft Spiele- und Multimedia-Programmierung 26
S KeyEvent funktioniert nicht, wenn Buttons dem Frame hinzugefügt werden Spiele- und Multimedia-Programmierung 7
C Export als .jar funktioniert nicht richtig (JAVA 3D) Spiele- und Multimedia-Programmierung 5
A Minecraft Minecraft, Programm funktioniert nur in Eclipse richtig Spiele- und Multimedia-Programmierung 24
F LWJGL: Licht und GL_LINES funktioniert nicht Spiele- und Multimedia-Programmierung 6
J KeyMapping funktioniert nicht Spiele- und Multimedia-Programmierung 5
J Sound einbinden funktioniert nicht Spiele- und Multimedia-Programmierung 13
D Slick Lib - Bilder einlesen funktioniert nicht Spiele- und Multimedia-Programmierung 2
M Mathetrainer - Reset Button funktioniert nicht! Spiele- und Multimedia-Programmierung 8
K Wie funktioniert hier ein Score ? Spiele- und Multimedia-Programmierung 4
O A* funktioniert, aber zu langsam Spiele- und Multimedia-Programmierung 10
D Highscoreliste eines Applets funktioniert online nicht Spiele- und Multimedia-Programmierung 4
StrikeTom KeyListener Funktioniert nicht Spiele- und Multimedia-Programmierung 3
aze Java 3D 1.5.2 auf Mac(Snow Leopard) funktioniert nicht mit Java SE 1.6 Spiele- und Multimedia-Programmierung 3
G Undo/Redo funktioniert nicht richtig Spiele- und Multimedia-Programmierung 2
Kidao Warum funktioniert hier keine Tastaturabfrage? Spiele- und Multimedia-Programmierung 6
S Sudoku Solver funktioniert beim 2. Aufruf nicht mehr Spiele- und Multimedia-Programmierung 11
R Kollisionserkennung funktioniert nicht Spiele- und Multimedia-Programmierung 3
R KeyListern funktioniert nicht. :S ? Spiele- und Multimedia-Programmierung 7
D Beispielprogram funktioniert nicht Spiele- und Multimedia-Programmierung 8
M Sonnensystem - Eigenrotation der Planeten funktioniert nicht Spiele- und Multimedia-Programmierung 4
M Wie funktioniert der RotPosPathInterpolator? Spiele- und Multimedia-Programmierung 5

Ähnliche Java Themen


Oben