Animation läuft nicht korrekt

Pianoman.20

Mitglied
Hallo zusammen,

Das Problem ist folgendes:

Ich habe in der paintComponent-Methode einen Timer erstellt, welche die Animation eines gezeichneten Bildes erzeugen soll. Wenn ich das Programm nun laufen lasse, erfolgt die Animation nur teilweise, d.h. manmachal macht es die richtigen Sprünge (-20) im 1-Sekunden-Takt und manchaml springt es wild durcheinander an Stellen an denen es vorgesehen ist (also nur in der y-Achse).

Java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Spielfeld extends JLabel {

    //Variablen
    int widthStickfigure;
    int heightStickfigure;
    int heightStickfigureMotion;

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);

        //Variablen
        Graphics2D g2d = (Graphics2D) g;
        Bilder bilder = new Bilder();
        widthStickfigure = (int) (this.getWidth() / 2.55);
        heightStickfigure = this.getHeight() - 160;

        //Animation
        Timer timer = new Timer(1000, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                heightStickfigure -= 20;
                heightStickfigureMotion = heightStickfigure;
                repaint();
            }
        });
        timer.start();

        //Zeichnen (Spieler)
        g2d.drawImage(bilder.stickfigureImage, widthStickfigure, heightStickfigureMotion, 120, 120, null);
    }
}
 

Marinek

Bekanntes Mitglied
Ich sehe hier im wesentlichen zwei konzeptionelle Fehler:

1. Der Timer ist mit delay 1000 und repeatable true

hier wäre in deinem Fall mindestens setRepeatable(false) zu setzen.

2. der TimerTask wird hunderte male initiiert und läuft immer wieder neu und kummuliert sich.

Der Task muss außerhalb des paintComponent() initialisiert werden, weil diese Methode auch bei jedem bewegen und resizen des Frames aufgerufen wird.

Damit spawnt du hunderte Timer, die selbst wieder neue Spawnen.
 

Marinek

Bekanntes Mitglied
Hi,

kannst du uns deinen aktuellen Quellcode zeigen.
Und beschreiben, was du an der Animation komisch findest?
Gruß,
Martin
 

Pianoman.20

Mitglied
Java:
public class Spielfeld extends JLabel {

    //Variablen
    int widthStickfigure;
    int heightStickfigure;
    int heightStickfigureMotion;

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);

        //Variablen
        Graphics2D g2d = (Graphics2D) g;

        Bilder bilder = new Bilder();
        
        widthStickfigure = (int) (this.getWidth() / 2.55);
        heightStickfigure = this.getHeight() - 160;

        //Animation
        Animation();

        //Zeichnen (Spieler)
        g2d.drawImage(bilder.stickfigureImage, widthStickfigure, heightStickfigureMotion, 120, 120, null);
    }
    
    public void Animation(){
        Timer timer = new Timer(1000, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                heightStickfigureMotion = (heightStickfigure -= 20);
                repaint();
            }
        });
        timer.start();
    }
}

Dies ist mein aktueller Code. Im Anhang befindet sich noch ein Video, welches mein Problem veranschaulichen soll.
 

Anhänge

  • JavaForumVideo.zip
    422,4 KB · Aufrufe: 0

mihe7

Top Contributor
Dein Code hat nach wie vor das Problem, dass Du bei jedem Neuzeichnen (paintComponent) einen neuen Timer startest. Kurz: Du darfst Animation() (Methodennamen schreibt man übrigens mit einem beginnenden Kleinbuchstaben) nicht in der Methode paintComponent() aufrufen. Ruf die Methode mal in dem Code auf, der auch die Instanz von Spielfeld erzeugt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Animation läuft nicht mehr flüssig AWT, Swing, JavaFX & SWT 8
Ernesto95 JavaFX Return Value nach Beendigung einer Animation AWT, Swing, JavaFX & SWT 15
H Simple Animation mit Swing AWT, Swing, JavaFX & SWT 2
DeBoiJoshua 2D-Grafik Gif Animation will nicht laden AWT, Swing, JavaFX & SWT 1
S JavaFX WebView zeigt keine Animation AWT, Swing, JavaFX & SWT 5
E showAndWait is not allowed during animation or layout processing Memory FX AWT, Swing, JavaFX & SWT 2
A 2D-Grafik Ruckelfreie Animation AWT, Swing, JavaFX & SWT 20
L JavaFX Animation, erst zeichnen dann anzeigen AWT, Swing, JavaFX & SWT 4
L JavaFX Animation für Panel wechsel AWT, Swing, JavaFX & SWT 3
J Java FX Koordinaten NACH Animation setzen, wie? AWT, Swing, JavaFX & SWT 9
Pr0m3theus Animation nach Event AWT, Swing, JavaFX & SWT 6
F JavaFX Timeline Animation soll X- und Y-Position während Animation ändern AWT, Swing, JavaFX & SWT 2
javampir 2D-Grafik Effizienz bei animation AWT, Swing, JavaFX & SWT 0
C Pixel-Rendering/Animation Performance in BufferedImage AWT, Swing, JavaFX & SWT 1
wolfgang63 JavaFX Animation, Kreise im vorgegebem Takt durchs Fenster laufen lassen AWT, Swing, JavaFX & SWT 3
P Ansatz für 2D Animation gesucht AWT, Swing, JavaFX & SWT 2
Thallius HHübsche Kopier Animation? AWT, Swing, JavaFX & SWT 5
L JPanel kleine "Animation" AWT, Swing, JavaFX & SWT 7
E Warum macht die einfache Animation einen kleinen Fehler? AWT, Swing, JavaFX & SWT 14
B 2D-Grafik Dynamisches Erstellen von Images und deren Animation AWT, Swing, JavaFX & SWT 4
R Swing Komponenten bleiben bei Animation unsichtbar AWT, Swing, JavaFX & SWT 7
J GIF Animation AWT, Swing, JavaFX & SWT 2
B Swing Thread+Animation AWT, Swing, JavaFX & SWT 7
R Swing Animation mit JLayeredPane? AWT, Swing, JavaFX & SWT 8
K 3D-Grafik Animation AWT, Swing, JavaFX & SWT 4
U Gif Animation mit JLabel AWT, Swing, JavaFX & SWT 3
P KeyListener + Animation AWT, Swing, JavaFX & SWT 2
D 2D-Grafik Animation flackert AWT, Swing, JavaFX & SWT 8
R Polygon-Animation mit Darstellungsfehlern AWT, Swing, JavaFX & SWT 5
StupidAttack Animation, JComponent AWT, Swing, JavaFX & SWT 3
S SWT Rudimentäre Bild Animation AWT, Swing, JavaFX & SWT 3
C Animation auf einem JPanel AWT, Swing, JavaFX & SWT 3
A paintComponent() - Animation AWT, Swing, JavaFX & SWT 2
S Ich brauche eine Idee: Animation mit teil eines Bildes AWT, Swing, JavaFX & SWT 16
H "Animation" AWT, Swing, JavaFX & SWT 2
S Animation korrekt darstellen AWT, Swing, JavaFX & SWT 8
Developer_X Nach Animation Button adden AWT, Swing, JavaFX & SWT 3
Developer_X Swing JPanel-THE ANIMATION AWT, Swing, JavaFX & SWT 3
T JFrame und Scale-Animation AWT, Swing, JavaFX & SWT 8
M Animation berechnen AWT, Swing, JavaFX & SWT 4
M Animation auf JPanel per Knopfdruck AWT, Swing, JavaFX & SWT 12
P Problem bei Animation AWT, Swing, JavaFX & SWT 2
K Animation auf GUI AWT, Swing, JavaFX & SWT 3
R ruckelfreie animation AWT, Swing, JavaFX & SWT 8
T Animation will nicht trotz Thread. AWT, Swing, JavaFX & SWT 14
S animation Flackern trotz doppelpufferung wieso? AWT, Swing, JavaFX & SWT 2
S Animation geht nicht AWT, Swing, JavaFX & SWT 3
m@nu Animation in GlassPane: Performanceeinbruch JFrame maximiert AWT, Swing, JavaFX & SWT 17
rudi.schraml Animation von Robotern auf FactoryFloor - repaint()? AWT, Swing, JavaFX & SWT 7
J Animation - Runnable AWT, Swing, JavaFX & SWT 3
O Animation in einem JPanel AWT, Swing, JavaFX & SWT 2
H Animation startet nicht/ Thread AWT, Swing, JavaFX & SWT 6
N Animation nach einem bestimmten Ereignis starten lassen? AWT, Swing, JavaFX & SWT 4
A Problem mit Animation AWT, Swing, JavaFX & SWT 4
M Animation mit Keylistener AWT, Swing, JavaFX & SWT 2
CodingBerlin JavaFX Programm läuft nur unter Eclipse AWT, Swing, JavaFX & SWT 1
N Programm Läuft nicht auf anderen Pcs AWT, Swing, JavaFX & SWT 9
MiMa Java und JavaFX 13 läuft endlich AWT, Swing, JavaFX & SWT 4
L JavaFX TreeView aufstellen läuft irgendwie auf Endlosschleife AWT, Swing, JavaFX & SWT 3
O LayoutManager pagelayout - Example läuft einfach nicht ! AWT, Swing, JavaFX & SWT 6
Blender3D Meine Swing Anwendung läuft unter Windows 10 und Ubuntu aber nicht auf Windows 7 AWT, Swing, JavaFX & SWT 16
R Swing Programm läuft nur beim Debuggen korrekt ab AWT, Swing, JavaFX & SWT 4
T swing läuft nur beding flüssig AWT, Swing, JavaFX & SWT 1
J JavaFX Anwendung läuft in eclipse, nicht aber exportiert AWT, Swing, JavaFX & SWT 2
N Programm läuft perfekt in Eclipse aber nicht in .JAR AWT, Swing, JavaFX & SWT 3
P Swing GUI noch nicht gezeichnet - Logik läuft - blockiert AWT, Swing, JavaFX & SWT 3
S Swing JProgressBar läuft nicht mit AWT, Swing, JavaFX & SWT 12
P Einfaches GUI läuft nicht AWT, Swing, JavaFX & SWT 6
A AWT Beim (mehrmaligen) Screenshot machen läuft der Speicher voll AWT, Swing, JavaFX & SWT 2
R GUI hängt während Programm läuft AWT, Swing, JavaFX & SWT 7
P repaint während Thread läuft AWT, Swing, JavaFX & SWT 9
G SWT-App läuft nicht unter OSX, unter Win aber problemlos AWT, Swing, JavaFX & SWT 3
G Programm läuft nur auf manchen Rechnern AWT, Swing, JavaFX & SWT 10
O Swing es können keine neuen Labels hinzufügt werden während der Timer läuft AWT, Swing, JavaFX & SWT 14
S Swing Hyperlink mit Hyperlinklistener läuft Amok AWT, Swing, JavaFX & SWT 3
P Swing [gelöst/erledigt] Gleicher Code läuft unterschiedlich unter Linux und Windows AWT, Swing, JavaFX & SWT 5
M Button funktioniert nicht mehr wenn Schleife läuft AWT, Swing, JavaFX & SWT 3
K Mein Informatikprojekt läuft aus dem Ruder Hilfe. F1 ^^ AWT, Swing, JavaFX & SWT 5
D Programm läuft unter XP aber nicht unter Knoppix AWT, Swing, JavaFX & SWT 6
A GtkLookAndFeel - läuft nicht . AWT, Swing, JavaFX & SWT 13
G Wie läuft ein GUI AWT, Swing, JavaFX & SWT 4
P WM 2006 - The Memory Game :P läuft nicht. AWT, Swing, JavaFX & SWT 15
M sicherstellen, dass nur eine Instanz läuft. AWT, Swing, JavaFX & SWT 6
S JCellRenderer läuft nur einmal in bestimmte Bedingung AWT, Swing, JavaFX & SWT 5
richis-fragen Spaltenbreite bei drag nicht änderbar AWT, Swing, JavaFX & SWT 4
Juelin if Abfrage funktioniert nicht richtig AWT, Swing, JavaFX & SWT 10
MiMa Darstellung von FXML ateien nicht korrekt (SceneBuilder) AWT, Swing, JavaFX & SWT 2
P Methode wird nicht überprüft AWT, Swing, JavaFX & SWT 4
C Button ActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
M Mandelbrot mit BigDecimal erstellen und in der UI zeichnen, funktionierte nicht. AWT, Swing, JavaFX & SWT 1
H JavaFX PixelWriter.setColor setzt Farbe nicht AWT, Swing, JavaFX & SWT 2
M JavaFX Diagonale Linie nicht ausgegeben/angezeigt AWT, Swing, JavaFX & SWT 1
M JavaFX Mandelbrot-bild noch nicht optimiert AWT, Swing, JavaFX & SWT 7
Hatsi09 Javafx MediaPlayer spielt nicht immer AWT, Swing, JavaFX & SWT 3
P thread nimmt veränderte boolean nicht AWT, Swing, JavaFX & SWT 7
P AWT Programm funktioniert nicht richtig AWT, Swing, JavaFX & SWT 35
P JTextField wird nur sehr klein angezeigt und verändert die Größe nicht AWT, Swing, JavaFX & SWT 3
Telisti Javafx Image wird nicht richtig integiert AWT, Swing, JavaFX & SWT 8
J Netbeans die JavaFX-Anwendung wird nicht ausgeführt AWT, Swing, JavaFX & SWT 16
thor_norsk Icons laden nicht in GUI AWT, Swing, JavaFX & SWT 15

Ähnliche Java Themen

Neue Themen


Oben