Animation: Ball fällt herunter

Ich möchte eine Animation erstellen, in der ein Ball hinunterfällt.

Habe mir das so gedacht

Java:
while(b.posy > 0){
				b.posy--;
				
				try {
					Thread.sleep(100);
				} catch (InterruptedException e1) {
					
					e1.printStackTrace();
				}
				
				repaint();
			}

Was passiert ist folgendes: Der Ball bleibt stehen ist nach eine Ablauf der while-Schleife unten.

Wie behebe ich nun dieses Problem?
 

Der Müde Joe

Top Contributor
hab da doch mal was gemacht:
(ist nicht grad perfekt aber als KSKB)
Java:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.Rectangle;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class BouncingPoint {

	private static final int HEIGHT = 500;
	private static final int WIDTH = 200;

	public BouncingPoint() {
		init();
	}

	private void init() {
		final JFrame frame = new JFrame("The bouncing Point");
		frame.setSize(WIDTH, HEIGHT);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		PointPanel pp = new PointPanel(WIDTH, HEIGHT);
		frame.getContentPane().add(pp);

		Thread thread = new Thread(new PointThread(pp));
		thread.start();
		frame.setVisible(true);
	}

	public static void main(String[] args) {
		new BouncingPoint();
	}

	public static class PointThread implements Runnable {

		private PointPanel pointPanel;

		private int speed = 4;
		private boolean upwards;

		public PointThread(PointPanel panel) {
			this.pointPanel = panel;
		}

		@Override
		public void run() {
			while (true) {
				int height = pointPanel.getHeight();

				Rectangle oldRect = pointPanel.getRectabgle();
				// change up/down
				if (oldRect.getCenterY() < (height / 4)) {
					upwards = false;
				} else if (!upwards && oldRect.getCenterY() > height - 20) {
					upwards = true;
				}
				Point oldLocation = oldRect.getLocation();

				Point newLocation;
				if (upwards) {
					newLocation = new Point(oldLocation.x, oldLocation.y - speed);
				} else {
					newLocation = new Point(oldLocation.x, oldLocation.y + speed);
				}
				Rectangle newrect = new Rectangle(newLocation, oldRect.getSize());

				pointPanel.updatePoint(newrect);
				try {
					// 50 Hz
					Thread.sleep(20);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}
	}

	@SuppressWarnings("serial")
	public static class PointPanel extends JPanel {

		final Dimension POINT_SIZE = new Dimension(20, 20);

		// actual point
		Rectangle rect = new Rectangle(new Point(250, 400), new Dimension(20, 20));

		public PointPanel(int width, int height) {
			super();
			// start point (middle of frame bottom)
			rect = new Rectangle(new Point(width / 2 - POINT_SIZE.width / 2, height - POINT_SIZE.height), POINT_SIZE);
		}

		@Override
		public void paintComponent(Graphics g) {
			super.paintComponent(g);
			g.setColor(Color.RED);
			g.fillOval(rect.x, rect.y, rect.width, rect.height);
		}

		public void updatePoint(Rectangle newRect) {
			Rectangle updateArea = newRect.union(rect);
			rect = newRect;
			// repaint the specific area
			repaint(updateArea.x, updateArea.y, updateArea.width + 1, updateArea.height + 1);
		}

		public Rectangle getRectabgle() {
			return this.rect;
		}
	}
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Animation/links-rechts Java Basics - Anfänger-Themen 9
G Animation Timer Nano Time Java Basics - Anfänger-Themen 2
J Animation eines Körpers auf der schiefen Ebene Java Basics - Anfänger-Themen 11
Anica Processing Animation Bild-Position ändern Java Basics - Anfänger-Themen 9
D Animation JPanel Java Basics - Anfänger-Themen 1
WetWer Animation JLabel Java Basics - Anfänger-Themen 2
A Animation einer Zahnradpumpe Java Basics - Anfänger-Themen 6
B Animation mit Thread(s) Java Basics - Anfänger-Themen 23
K Möglichkeiten um eine einfache Animation darzustellen Java Basics - Anfänger-Themen 7
C Animation nur einmal durchführen Java Basics - Anfänger-Themen 3
N Bilderarray als animation ablaufen lassen?? Java Basics - Anfänger-Themen 6
G Threads SuM Class Animation Java Basics - Anfänger-Themen 13
J .gif Animation Java Basics - Anfänger-Themen 4
J Animation Java Basics - Anfänger-Themen 5
M Animation in einem Multiplayerspiel Java Basics - Anfänger-Themen 3
S Animation nach bestimmter Zeit ausführen Java Basics - Anfänger-Themen 3
T Animation Java Basics - Anfänger-Themen 2
M Animation von Kreisen Java Basics - Anfänger-Themen 15
U Y-Animation Java Basics - Anfänger-Themen 3
G Zufalls Animation Java Basics - Anfänger-Themen 9
Luk10 einfach animation Java Basics - Anfänger-Themen 2
H Animation malen! Java Basics - Anfänger-Themen 2
S JTable mit Animation??? Java Basics - Anfänger-Themen 7
B Flash Animation SWF in Java absielen Java Basics - Anfänger-Themen 18
R Probleme mit Animation und der erstellung einer jar Datei. Java Basics - Anfänger-Themen 11
U Animation bleibt leer (weiß) Java Basics - Anfänger-Themen 5
T Animation übermalt panels Java Basics - Anfänger-Themen 6
M Simple Animation funktioniert nicht (JFrame, Canvas, Thread) Java Basics - Anfänger-Themen 6
S Desktop Animation Java Basics - Anfänger-Themen 15
T Abspeichern einer Animation in *.bmp Java Basics - Anfänger-Themen 12
K animation in applet, thread problem (?) Java Basics - Anfänger-Themen 3
K Animation warten lassen Java Basics - Anfänger-Themen 9
F Animation Java Basics - Anfänger-Themen 3
J Animation Java Basics - Anfänger-Themen 2
Jxhnny.lpz bouncing Ball (Brick-Breaker-Game) Java Basics - Anfänger-Themen 1
Jxhnny.lpz bouncing ball / abprallender Ball Java Basics - Anfänger-Themen 11
K BlueJ Ball an Rand Reflektieren Java Basics - Anfänger-Themen 2
dome385 Ball Ball Kollision physikalisch korrekt Java Basics - Anfänger-Themen 5
A Breakout-Spiel , Ball mit Platten abprallen lassen Java Basics - Anfänger-Themen 1
A Ball kollidiert nicht mit Rand Java Basics - Anfänger-Themen 5
J Ball (unendlich) Java Basics - Anfänger-Themen 12
A Bouncing Ball bis er ruht Java Basics - Anfänger-Themen 6
T Processing: Quecksilberartiger Ball Java Basics - Anfänger-Themen 2
J Ball->Wand Kollision - Ball bleibt an Decke und Boden hängen Java Basics - Anfänger-Themen 2
J Das schöne Bouncing Ball Beispiel. Java Basics - Anfänger-Themen 20
P Ball auf Panel hüpfen lassen Java Basics - Anfänger-Themen 4
G Ball-Bewegung Java Basics - Anfänger-Themen 19
F Ball soll auf Mausklick farbe ändern. Java Basics - Anfänger-Themen 10
M Wie kann ich festlegen, dass ein Attribut maximal den Wert 0 erreicht, also nicht in den negativen Bereich fällt? Java Basics - Anfänger-Themen 4
Ponychan95 Erste Schritte Switch fällt immer bis zum default durch Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben