Animation nur einmal durchführen

Crisma

Mitglied
Hallo,

ich habe ein Problem mit meinem folgenden Code. Ich bekomme es einfach nicht hin, dass eine Animation nur ein einziges mal durchgeführt wird, wenn eine Taste gedrückt wird.
Es ist ein simples Spiel, bei dem man ein Raumschiff navigieren kann.
Nun soll es so sein, dass, wenn man nach unten oder oben fliegt, das Schiff sich in eine Schräglage legt, dazu hab ich 5 PNGs, die halt nacheinander abgespielt werden sollen.

Ich bekomme eine Animation hin, wenn man die entsprechende Taste drückt, aber leider nur im Loop.
Vielleicht kann mir ja jemand auf die Sprünge helfen oder hat eine Idee. Ich bin irgendwie gerade blockiert.
Sleep wollte ich eigentlich vermeiden, sollte ich die Animation in eine neue Klasse packen?

Die Klasse Player wird in der Main Klasse im GameLoop aufgerufen, bzw. eben update() und getLook() im Frame.

Grüße,
C.


Hier der Code:
Java:
//package GameOne;

import java.awt.Rectangle;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.List;

import javax.imageio.ImageIO;

public class Player {
	private float f_xPos, f_yPos;
	private BufferedImage lookAlive, lookDead;
	private BufferedImage[] lookSpaceshipUp = new BufferedImage[5];
	private BufferedImage[] lookSpaceshipDown = new BufferedImage[5];

	// für die animation
	private static final float NEEDANITIME = 0.4f;
	private float aniTime = 0;
	private long timeMillis;

	private boolean isAlive = true;

	public Player(float f_xPos, float f_yPos) {
		this.f_xPos = f_xPos;
		this.f_yPos = f_yPos;

		// Erscheinung des Schiffes
		try {
			DecimalFormat df = new DecimalFormat("00");
			for (int i = 0; i < 5; i++) {
				String fileName = "gfx/spaceship/smallfighter00"
						+ (df.format(i + 1)) + ".png";
				lookSpaceshipUp[i] = ImageIO.read(getClass().getClassLoader()
						.getResourceAsStream(fileName));
			}
			for (int i = 0; i < 5; i++) {
				String fileName = "gfx/spaceship/smallfighter00"
						+ (df.format(i + 7)) + ".png";
				lookSpaceshipDown[i] = ImageIO.read(getClass().getClassLoader()
						.getResourceAsStream(fileName));
			}

			lookAlive = ImageIO.read(getClass().getClassLoader()
					.getResourceAsStream("gfx/spaceship/smallfighter0006.png"));
			lookDead = ImageIO.read(getClass().getClassLoader()
					.getResourceAsStream("gfx/spaceship_dead.png"));
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

	public void update(float timeSinceLastFrame) {
		aniTime += timeSinceLastFrame;
		if (aniTime > NEEDANITIME)aniTime = 0;

		// bewegen
		// nach oben
		if (Keyboard.isKeyDown(KeyEvent.VK_W)) {
			f_yPos-=300*timeSinceLastFrame;
		}
		// nach unten
		if (Keyboard.isKeyDown(KeyEvent.VK_S)) {
			f_yPos+=300*timeSinceLastFrame;
		}
		if (Keyboard.isKeyDown(KeyEvent.VK_A))
			f_xPos -= 300 * timeSinceLastFrame;
		if (Keyboard.isKeyDown(KeyEvent.VK_D))
			f_xPos += 300 * timeSinceLastFrame;

	}

	public int getX() {
		return (int) f_xPos;
	}

	public int getY() {
		return (int) f_yPos;
	}

	public BufferedImage getLook() {

		if (!isAlive)
			return lookDead;
		else {
			if (Keyboard.isKeyDown(KeyEvent.VK_S)) {
				return lookSpaceshipDown[4];	
			}
			if (Keyboard.isKeyDown(KeyEvent.VK_W)) {
				return lookSpaceshipUp[0];
			}
			return lookAlive;
		}
	}

}
 

Crisma

Mitglied
aber selbstverständlich werden Bilder aus den Arrays in der Methode getLook() wieder gegeben, und zwar einmal das fünfte Element eines Arrays und einmal das erste Element eines Arrays. update() ist void, da kommt nix zurück.

Ich hatte ja geschrieben, dass ich eine einmalige Animation nicht hinbekomme, eben nur eine Animation im Loop. Ich hatte ja nicht geschrieben, dass in dem Code eine stattfindet.
Wo das passieren soll, hatte ich vergessen zu erwähnen, hätte jetzt aber gedacht, das wäre nicht nötig.
Das Schiff fliegt mit den Tasten W und S nach oben/unten, da soll es sich dann auch neigen, sprich die Animation einmal durchführen.

Hab inzwischen was hinbekommen, gefällt mir aber noch nicht
Java:
public BufferedImage getLook() {

		if (!isAlive)
			return lookDead;
		else {
			if (Keyboard.isKeyDown(KeyEvent.VK_S)) {
				//hier müsste noch ein wait rein, ca. 100-200ms
				if(counter<5)counter++;
				return lookSpaceshipDown[counter-1];	
			}
			if (Keyboard.isKeyDown(KeyEvent.VK_W)) {
				if(counter<5)counter++;
				return lookSpaceshipUp[counter-1];
			}
			counter=0;
			return lookAlive;
		}
	}
 
ganz einfach gefragt:
Java:
boolean key = true;
do {
if (Keyboard.isKeyDown(KeyEvent.VK_W)) {
key = false;
}
}while (key)


Do-While oder taugt das nix für diesen Zweck?

Die Schleife wird auf Abruf einmal durchlaufen und auf boolsche Variable == false verlassen.
 
Ä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
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
K Animation: Ball fällt herunter Java Basics - Anfänger-Themen 2
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
N Kann man einen Iterator nur einmal verwenden Java Basics - Anfänger-Themen 5
W Schleife und einmal variable++ zu viel Java Basics - Anfänger-Themen 20
S Arrayausgabe und nur einmal ein Zeichen davor Java Basics - Anfänger-Themen 12
O 2d Array einmal Eins Java Basics - Anfänger-Themen 2
marcooooo einmal noch schnell hilfe bitte:/ Java Basics - Anfänger-Themen 2
F Problem beim entfernen von mehreren Listenelementen auf einmal (Programmierung des Spiels Arschloch) Java Basics - Anfänger-Themen 1
S Wie erhöhe ich den Wert von mehren Integers auf einmal? Java Basics - Anfänger-Themen 5
J Operatoren Random wird nur einmal erstellt und dann immer verwendet Java Basics - Anfänger-Themen 2
L Variablen einmal nur zu weisen Java Basics - Anfänger-Themen 62
D Array-Liste nur einmal ausgeben Java Basics - Anfänger-Themen 8
M Erste Schritte Neuen Frame nur einmal offen haben Java Basics - Anfänger-Themen 6
E Threads Thread in While-Schleife nur einmal starten Java Basics - Anfänger-Themen 2
P JFrame nur einmal öffnen Java Basics - Anfänger-Themen 4
R ArrayList - System.out.println nur einmal, statt 10 mal Java Basics - Anfänger-Themen 5
S Threads run - Funktion wird nur einmal ausgeführt. Java Basics - Anfänger-Themen 8
Lord.Djerun (Taschenrechner Netbeans) Komma nur einmal schreiben & 0 ersetzen Java Basics - Anfänger-Themen 1
N Erste Schritte JButton reagiert nur einmal. Java Basics - Anfänger-Themen 12
N Klassen Class nur einmal ausführen und sie speichert daten für alle anderen classes? Java Basics - Anfänger-Themen 3
R Double: auf einmal Komma statt Punkt Java Basics - Anfänger-Themen 4
P gui fenster nur einmal aufrufen Java Basics - Anfänger-Themen 5
O Noch einmal Methoden Java Basics - Anfänger-Themen 9
K Regex - Jeder buchstabe nur einmal Java Basics - Anfänger-Themen 7
O Threads Ein Thread läuft exakt einmal Java Basics - Anfänger-Themen 4
T Zufalls jedoch jede nur einmal Java Basics - Anfänger-Themen 10
R (Math.random()*49) zahl darf aber nur einmal gezogen werden Java Basics - Anfänger-Themen 11
D ???:L Bitte einmal mit drüber nachdenken Java Basics - Anfänger-Themen 5
M Mehrere Methoden eines Objekts auf einmal ausführen Java Basics - Anfänger-Themen 3
J äußere for schleife wird nur einmal durchlaufen Java Basics - Anfänger-Themen 8
H Alle Array-Elemente auf einmal überprüfen? Java Basics - Anfänger-Themen 10
S button nur einmal verwendbar Java Basics - Anfänger-Themen 3
A String wird nur einmal an den StringBuffer angehängt Java Basics - Anfänger-Themen 10
I Memory-Spiel Feld nur einmal mischen Java Basics - Anfänger-Themen 2
W Java ProcessBuilder - externer Prozess nur einmal starten und mehrere Inputs geben Java Basics - Anfänger-Themen 7
L Mehrere Objekte einer Klasse aber nur einmal Konstruktor aufruf? Java Basics - Anfänger-Themen 2
J Batch Datei Problem, Programm nur einmal starten Java Basics - Anfänger-Themen 9
L SystemTray-displayMessage nur einmal Anzeigen Java Basics - Anfänger-Themen 2
1 OOP Zugriff auf eine Methode nur einmal die Sekunde Java Basics - Anfänger-Themen 8
K methode wird nur einmal korrekt durchlaufen Java Basics - Anfänger-Themen 4
I Werte werden auf einmal negativ Java Basics - Anfänger-Themen 3
G Zufallszahlen die alles einmal vorkommen Java Basics - Anfänger-Themen 15
K Animiertes Gif nur einmal abspielen Java Basics - Anfänger-Themen 3
A paar bilder auf einmal Java Basics - Anfänger-Themen 3
R Kann man Threads nur einmal starten? Java Basics - Anfänger-Themen 4
M Javaprogramm darf nur einmal gestartet werden Java Basics - Anfänger-Themen 3
G Methode nur einmal ausführen Java Basics - Anfänger-Themen 5
T string: jeden alphabetsbuchstaben nur einmal enthalten Java Basics - Anfänger-Themen 8
G Thread nur einmal starten Java Basics - Anfänger-Themen 5
F Bild einmal aus Datei laden und in Klasse speichern Java Basics - Anfänger-Themen 3
ARadauer jedes Element in Liste nur einmal Java Basics - Anfänger-Themen 2
G Gleiche Aktionen verarbeiten (aber nur einmal Code)? Java Basics - Anfänger-Themen 2
J Verständnisfrage: DB einmal öffnen oder jedesmal von neuem Java Basics - Anfänger-Themen 2
N Thread soll nur einmal ausgeführt werden, aber wie stoppen? Java Basics - Anfänger-Themen 5
D Einmal Runden ohne alles Java Basics - Anfänger-Themen 7
E *.exe EINMAL starten (bei klicken kein zweites mal) Java Basics - Anfänger-Themen 5
I Stack ist auf einmal empty Java Basics - Anfänger-Themen 3
B Zufallszahlen je einmal in Array einfügen Java Basics - Anfänger-Themen 4
3 Taschrechner Rechnung durchführen Java Basics - Anfänger-Themen 8
S Umfrage durchführen. Java Basics - Anfänger-Themen 13
DaCrazyJavaExpert Verschiede Aktionen der Datenbank getrennt durchführen Java Basics - Anfänger-Themen 4
B Rekursion von Hand durchführen Java Basics - Anfänger-Themen 2
M Junit Tests durchführen, die eine Verbindung zu einer Daten erfordern Java Basics - Anfänger-Themen 3
D Java Programm auf Kommandozeile durchführen Java Basics - Anfänger-Themen 12
C Mit if Überprüfung von drei Werten durchführen Java Basics - Anfänger-Themen 6
E HTTP Client - Login durchführen? Java Basics - Anfänger-Themen 4
J Rundungsoperation in einer Zeite durchführen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben