# Raketenspiel



## Nando (6. Okt 2009)

Hallo liebes Forum

Für eine Messe soll ich ein Raketenspiel entwickeln.
Es soll eine Rakete solange dampfen(vor dem Start) bis durch ein Barcode der Inputgegeben wird und die Rakete davon fliegt. Es erscheint der Preis den man gewonnen hat und der Loop fängt von neuem an.

Da Java3d zu kompliziert und träge ist, Rendere ich die Rakete in Cinema4d und Fryrender als normales Video (MPG).
Es entstehen also zwei Videos:
- ein dampfendes Video (wird geloopt)
- ein Video bei dem die Rakete startet (wird einmal abgespielt)

Der Barcodeleser sowie auch das Spiel habe ich erfolgreich realisiert/integriert.
Das einzige Problem ist die Videowiedergabe. Dazu verwende ich die JMF Libary.
Ich erstelle eine MediaPanel Klasse die ich dem Frame adde. Nun möchte ich gerne dem MediaPanel zwei funktionen programmieren.

1: raketenLoop(): soll das Video test.mpg sollange wiederholen bis funktion 2 ausgeführt wird:
2: raketenStart(): soll das Video test.mpg durch test2.mpg ersetzen und einmal abspielen.

Hat jemand Erfahrung mit JMF der mir diese Frage vieleicht beantworten kann? 
Gibt es allenfalls noch einen einfacheren weg diese Aufgabe zu lösen ohne JMF?

Vielen Dank schon im Voraus
Nando



```
import java.awt.Component;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import javax.media.CannotRealizeException;
import javax.media.Manager;
import javax.media.NoPlayerException;
import javax.media.Player;
import javax.media.Time;
import javax.swing.JPanel;
   
public class MediaPanel extends JPanel {
	Player mediaPlayer = null;
	public MediaPanel() {
		URL mediaURL = null;
        try {
           //Das File von folgendem URL holen
           mediaURL = new URL("file:/C:/Users/nando.marocco/Desktop/schrödergame/test/vid/test.mpg");
        } catch ( MalformedURLException malformedURLException ) {
             System.err.println( "Das File wurde nicht gefunden." );
        } 
        
		Manager.setHint( Manager.LIGHTWEIGHT_RENDERER, true );
		
		try {
			this.mediaPlayer = Manager.createRealizedPlayer( mediaURL ); //einen Player erstellen
			Component video = mediaPlayer.getVisualComponent(); //Dem Player den videocomponenten adden
            if ( video != null )
                add( video ); // den videocomponenten auf das Panel adden
                
		} catch ( NoPlayerException noPlayerException ) {
             System.err.println( "Es wurde kein Player gefunden." );
        } catch ( CannotRealizeException cannotRealizeException ) {
             System.err.println( "Konnte den Player nicht starten." );
        } catch ( IOException iOException ) {
             System.err.println( "Falsches Format." );
        } 
	} 
	
	public void raketenLoop() {
		
		
		this.mediaPlayer.start();
                //Das Video Soll geloopt werden
		
	}
	
	public void raketenStart() {
		this.mediaPlayer.start();
		//Das Video soll ersetzt werden durch test2.mpg und einmal abgespielt werden

	}
}
```


----------



## Nando (7. Okt 2009)

ist die libary jms so unbekannt das mir niemand helfen kann?
gibt es eine andere einfache lösung um ein video in java abzuspielen?


----------



## Steev (7. Okt 2009)

Na ja,

qt gibt es da noch...

QuickTime for Java


----------



## Nando (7. Okt 2009)

hm und da ist loopen möglich?

ich kann doch nicht der erste sein, der eine einfache videowiedergabe will programmieren ^^?


----------



## Steev (7. Okt 2009)

Zum loopen in JMF habe ich einen Code gefunden, wo das offensichtlich getan wird, ob er funktioniert habe ich allerdings nicht getestet...
Java Media Framework - Re: Audio and video quality is very poor in JMF Player on Ubuntu and MAC.

Ich denke es müsste Funktionieren, wenn man abfragt, ob das video abgespielt wurde und es dann zurückspult und erneut abspielt.


----------



## Heady86 (8. Okt 2009)

Hi,


> hm und da ist loopen möglich?



dazu hab ich in einem anderen Thread einen link gepostet. Laut Threadstarter hat das mit leichten Anpassungen funktioniert, evtl. kannst du dich ja direkt an den wenden um die genauen Änderungen zu erfahren.

Grüße


----------



## Nando (8. Okt 2009)

Danke erstmals für die Hilfe 
Ich werde das Wochenende die zwei verschiedenen Lösungswege probieren und die Lösung dann hier posten.


----------

