Hintergrundmusik eines Spiels mit Hilfe von JLayer

Thanatos

Mitglied
Hallo zusammen,
wie der Titel schon sagt, beschäftige ich mich mit einem Spiel, welches natürlich auch eine passende Hintergrundmusik braucht! ;)
Ich bin blutiger Java-Anfänger (arbeite mit Eclipse) und habe noch nicht wirklich viel Ahnung...
Nun zu meiner Frage: Wie kann ich ein langes Lied (mp3), das sich immer wieder wiederholt, mit Hilfe von JLayer (von mir aus auch anders) mit Java abspielen?
Ich habe bereits stundenlang (also wortwörtlich) nach passenden Beispielen gesucht, jedoch ging davon nichts bei mir.

Schonmal vielen Dank für eure Hilfe und falls euch meine Frage zu ungenau ist, einfach nachfragen! :)

Thanatos
 

Thanatos

Mitglied
Java:
public static synchronized void playSound(final String url) {
  new Thread(new Runnable() {
  // The wrapper thread is unnecessary, unless it blocks on the
  // Clip finishing; see comments.
    public void run() {
      try {
        Clip clip = AudioSystem.getClip();
        AudioInputStream inputStream = AudioSystem.getAudioInputStream(
          Main.class.getResourceAsStream("/path/to/sounds/" + url));
        clip.open(inputStream);
        clip.start(); 
      } catch (Exception e) {
        System.err.println(e.getMessage());
      }
    }
  }).start();
}


Geht bei mir aber leider nicht. Ich habe diesen Thread bereits einmal gefunden gehabt und den Code ausprobiert, habe aber eine Fehlermeldung (Und nein, nicht der Pfad ;) ).
In der ersten Zeile bekomme ich multiple Fehlermeldungen:
Syntax error on token "void", @ expected
Syntax error on token "final", @ expected
Syntax error on token(s), misplaced construct(s)



Wie gesagt, ich bin absoluter Anfänger, und brauche einfach verständliche Hilfe.
Ich investiere gerne viel Zeit, aber bitte seid nicht all zu hart, jeder muss ja mal anfangen! ;)
 
Zuletzt bearbeitet von einem Moderator:

Major_Sauce

Bekanntes Mitglied
Der Fehler scheint zu entstehen da deine Methode falsch plaziert ist.
Wäre super wenn du einfach mal deine ganze Klasse hier posten könntest.
Ach ja, wenn du auf "Erweitert" gehst, beim Antworten, dann findest du oben bei den Icons eine Java-Tag Button, wenn du deinen Code da rein tippst dann wird das auch in der Java ansicht angezeigt

Sieht dann etwa so aus:

Hier ein tag...
if(i == 0){
System.out.println("Ich mag Kekse");
}
Hier endtag...

Ergebnis:

Java:
    if(i == 0){
        System.out.println("Ich mag Kekse");
    }
 

Thanatos

Mitglied
Das war doch eine sehr nützliche Antwort! Vielen Dank schonmal dafür!
Die erste Fehlerquelle konnte ich jetzt beseitigen, ein Leichtsinnsfehler meinerseits....
Okay vielen Dank, werde das in Zukunft mit dieser Möglichkeit machen.
Aber nun zum bisherigen Code:

[Java]
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;

public class Test5 {


public static synchronized void Test5 (final String url) {
new Thread(new Runnable() {
// The wrapper thread is unnecessary, unless it blocks on the
// Clip finishing; see comments.
public void run() {
try {
Clip clip = AudioSystem.getClip();
AudioInputStream inputStream = AudioSystem.getAudioInputStream(
Main.class.getResourceAsStream("C:\\Users\\Thanatos\\Desktop\\19 Titel 19.wav"));
clip.open(inputStream);
clip.start();
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}).start();

}
}
[/Java]


Fehlercode:

Fehler: Hauptmethode in Klasse Test5 nicht gefunden. Definieren Sie die Hauptmethode als:
public static void main(String[] args):
oder eine JavaFX-Anwendung muss javafx.application.Application erweitern




Danke für die Hilfe!
 
Zuletzt bearbeitet:

Major_Sauce

Bekanntes Mitglied
Morgen,

Steht doch ganz klar drin, dein Projekt hat keine Hauptmethode.
Du musst die main Methode implementiere

Tuh der Welt einen Gefallen und benenne die Test5-methode anders. playSound() oder sowas.
Methoden sollten nie den namen der Klasse besitzen, das ist nicht "elegant".

Java:
public static void main(String[] args){
    new Test5().playSound();
}
 

Thanatos

Mitglied
Tut mir leid, ich kenne mich nunmal mit Programmieren und "Programmierethik" nicht wirklich aus! :(

Java:
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;

public class Test5 {


public static synchronized void playsound (final String url) {
  new Thread(new Runnable() {
  // The wrapper thread is unnecessary, unless it blocks on the
  // Clip finishing; see comments.
    public void run() {
      try {
        Clip clip = AudioSystem.getClip();
        AudioInputStream inputStream = AudioSystem.getAudioInputStream(
          Main.class.getResourceAsStream("C:\\Users\\Thanatos\\Desktop\\19 Titel 19.wav"));
        clip.open(inputStream);
        clip.start(); 
      } catch (Exception e) {
        System.err.println(e.getMessage());
      }
    }
  }).start();

}
public static void main(String[] args){
    new Test5().playSound();
}
}



Fehlermeldung:

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
playsound cannot be resolved to a type
at Test5.main(Test5.java:27)


bei:
Java:
Main.class.getResourceAsStream("C:\\Users\\Thanatos\\Desktop\\19 Titel 19.wav"));

bekomme ich weiterhin folgende Fehlermeldung:

"Main cannot be resolved to a type" .


Ich entschuldige mich wirklich für meine Unwissenheit, ich mag es auch nicht andere Leute zu belästigen! :noe:
 

Major_Sauce

Bekanntes Mitglied
Nabend,

ich möchte dich hier nicht niedermachen (war eher ein Gag)
Du belästigst hier auch niemanden, dafür ist das Forum ja gedacht, wobei ich sagen muss dass man da auch mit ein wenig Recherche auf ähnliche Beiträge kommt.
Ist aber gar kein Problem, was mich interessieren würde: Benutzt du eine IDE (z.B Eclipse oder Netbeans).

Zu deinem Problem:

Ich weiß nicht wie die Klass Test5 bei dir verbaut ist.
Ich weiß auch nicht wo du das "Main.class.getResourceAsStream(...)" her hast, jedoch gibt es im Moment 2 Möglichkeiten:

1. Die Klasse Test5 liegt in einem Projekt welche die Klasse "Main.class" besitzt. In diesem Fall sollte die Main-Methode bereits in der Main.class enthalten sein oder man sollte sie dort hin verschieben.

2. Die Klasse Test5 ist die Main-class deines Projekts, das würde heißen dass deine Zeile :

Java:
AudioInputStream inputStream = AudioSystem.getAudioInputStream(Main.class.getResourceAsStream("C:\\Users\\Thanatos\\Desktop\\19 Titel 19.wav"));

eher so aussehen sollte:

Java:
AudioInputStream inputStream = AudioSystem.getAudioInputStream(getClass().getResourceAsStream("C:\\Users\\Thanatos\\Desktop\\19 Titel 19.wav"));

oder du lässt die so wie sie war, musst dann aber noch die Main-Klasse importieren. Dies funktioniert folglich nur, wenn es schon eine Main.class gibt.

mfg Major
 

Thanatos

Mitglied
Hallo Major,
ich benutze Eclipse.
Was ich hier als Code gepostet habe ist der einzige Code in dem Java-Projekt, zu finden unter src->(default package)->Test5.java->Test5.
In der JRE System Library befinden sich dann noch die JLayer-Bibliothek....
Wie ich oben bereits gesagt habe, habe ich über google nichts wirklich brauchbares gefunden, ansonsten hätte ich hier ja keinen post gemacht! :) Aber danke dafür, dass du so geduldig bist!
Mein Projekt besitzt bisher nur die Klasse Test5, es ist außer dieser nichts vorhanden.
Eine main-class existiert folglich nicht.
Falls möglich würde ich gerne nur eine Klasse zur Umsetzung benutzen, das finde ich persönlich irgendwie angenehmer...
Ich weiß es ist viel verlangt, aber könntest du mir anhand dem von mir oben geposteten code eine funktionierende variante posten? Ich glaube, das würde mir mehr helfen, da ich mit deinen Lösungen leider nicht viel anfangen kann! Diese sind zwar sicher gut erklärt, aber ich bin nunmal absoluter Neuling.

Java:
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;

public class Test5 {


public static synchronized void playsound (final String url) {
  new Thread(new Runnable() {
  // The wrapper thread is unnecessary, unless it blocks on the
  // Clip finishing; see comments.
    public void run() {
      try {
        Clip clip = AudioSystem.getClip();
        AudioInputStream inputStream = AudioSystem.getAudioInputStream(getClass().getResourceAsStream("C:\\Users\\Thanatos\\Desktop\\19 Titel 19.wav"));
         clip.open(inputStream);
        clip.start(); 
      } catch (Exception e) {
        System.err.println(e.getMessage());
      }
    }
  }).start();

}
public static void main(String[] args){
    new Test5().playSound();
}
}

Ich hoffe, ich habe deine Erklärung richtig angewendet.
Leider habe ich immer noch folgende Fehlermeldung:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method playSound() is undefined for the type Test5
at Test5.main(Test5.java:26)
 

Major_Sauce

Bekanntes Mitglied
Bitte ändere die Bezeichnung deines Packages zu "main"

hier der Code, sollte funktionieren...

Java:
package main;

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;

public class Test5 {

	public static synchronized void playSound(final String url) {
		new Thread(new Runnable() {
			public void run() {
				try {
					Clip clip = AudioSystem.getClip();
					AudioInputStream inputStream = AudioSystem.getAudioInputStream(getClass().getResourceAsStream(url));
					clip.open(inputStream);
					clip.start();
				} catch (Exception e) {
					System.err.println(e.getMessage());
				}
			}
		}).start();
	}

	public static void main(String[] args) {
		playSound("C:\\Users\\Thanatos\\Desktop\\19 Titel 19.wav");
	}
}

mfg major
 

Thanatos

Mitglied
Super danke, ich habe jetzt auch endlich den vernünftigen Aufbau verstanden! :)
Ich weiß, wurde auch mal Zeit. ;)
Es wird mir nun keine Fehlermeldung mehr angezeigt, jedoch steht in der Console nur in roter Schrift "null". Was hat das zu bedeuten? Das der Inputstream den Wert 0 hat? Oder wie ist das zu verstehen?

Wirklich vielen Dank, du hast mir bisher super geholfen! :)
 

Major_Sauce

Bekanntes Mitglied
Da bin ich mir jetzt nicht ganz sicher, aber ich glaube getResourceAsStream kann blos auf der Source ordner zugreifen. Zieh die sound datei mal direkt in den src ordner und versuch dann als pfad einfach nur "19 Titel 19.wav".
Ich weiß auch nicht ob die Leerzeichen im Titel möglicher Weise Probleme machen.

mfg Major
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Android Studio - Hintergrundmusik Spiele- und Multimedia-Programmierung 3
S Video mit Hintergrundmusik versehen Spiele- und Multimedia-Programmierung 2
R Hintergrundmusik für ein Onlinespiel Spiele- und Multimedia-Programmierung 4
N Seltsame Exception bei Code eines Spiele-Tutorials Spiele- und Multimedia-Programmierung 6
R Ideen für die Backend-Entwicklung eines Games gesucht Spiele- und Multimedia-Programmierung 8
A Programmieren eines Memorys mit Java (in Eclipse) Spiele- und Multimedia-Programmierung 5
T Position eines Image verändern mithilfe eines Timers Spiele- und Multimedia-Programmierung 6
E Programmierung eines 2.5D Point&Click Adventures ohne Spieleengine machbar? Spiele- und Multimedia-Programmierung 14
K Click innerhalb eines 45° gekippten Rechtecks Spiele- und Multimedia-Programmierung 9
J LibGdx_3D: Klamotten eines Charakters modifizieren Spiele- und Multimedia-Programmierung 2
K Erstellen eines Fotoalbums mit Java Spiele- und Multimedia-Programmierung 8
R Fehler beim Laden eines 2D-Bildes Spiele- und Multimedia-Programmierung 3
L OpenGL TransformationMatrix eines Flugzeugs Spiele- und Multimedia-Programmierung 2
M Programmierung eines "Fantasy Rollenspiels" Spiele- und Multimedia-Programmierung 5
E Laufanimation eines Sprites Spiele- und Multimedia-Programmierung 6
Finalspace Entwicklung eines Jump & Run Spiels Video-Tutorial Spiele- und Multimedia-Programmierung 12
M Cylinder anhand eines Vektors ausrichten (Java3d) Spiele- und Multimedia-Programmierung 0
M bewegen eines Objektes Spiele- und Multimedia-Programmierung 2
U Hilfe bei Implementierung eines PointSounds in Java3D Spiele- und Multimedia-Programmierung 1
gamebreiti Index eines Elements einer ArrayList abfragen Spiele- und Multimedia-Programmierung 1
X "Rebuffen" - Messen der Zeit eines Timers Spiele- und Multimedia-Programmierung 3
S Design eines Schachspiels Spiele- und Multimedia-Programmierung 3
S Mausklicks innerhalb eines JFrames/SWTBrowser ohne richtige Maus simulieren Spiele- und Multimedia-Programmierung 6
F Programmierung eines Bots Spiele- und Multimedia-Programmierung 23
A Wann ist ein Punkt inerhalb eines Polygons? Spiele- und Multimedia-Programmierung 2
F LWJGL Problem mit Erstellen eines Objekts und der Kamera Spiele- und Multimedia-Programmierung 5
R Drehen eines Bildes relativ zur Mauszeigerposition Spiele- und Multimedia-Programmierung 2
M Pattern zur Auswahl eines Objektes anhand vieler Kriterien Spiele- und Multimedia-Programmierung 2
H Skalierung eines Polygons ohne das es verschoben wird Spiele- und Multimedia-Programmierung 3
R Triangulation eines komplexen Polygons Spiele- und Multimedia-Programmierung 4
L Lwjgl Darstellung eines Kreises im Raum Spiele- und Multimedia-Programmierung 3
M Pixel eines BufferedImage bearbeiten (Performance) Spiele- und Multimedia-Programmierung 23
G Rotieren eines Objekts (2D) Spiele- und Multimedia-Programmierung 8
F nur Ausschnitt eines Image zeichnen Spiele- und Multimedia-Programmierung 9
S Umfang eines Polygons erzeugen Spiele- und Multimedia-Programmierung 1
D Highscoreliste eines Applets funktioniert online nicht Spiele- und Multimedia-Programmierung 4
W CannotRealizeException (jmf) beim abspielen eines liedes Spiele- und Multimedia-Programmierung 3
F Meine Aufgabe: Client-Server am Beispiel einer Implementation eines Tic-Tac-Toe Netzwerkspieles Spiele- und Multimedia-Programmierung 7
D Koordinaten eines 2D Sprites Spiele- und Multimedia-Programmierung 2
B Teile eines Bildes laden - BitBlk und drawImage Spiele- und Multimedia-Programmierung 3
S Interpolation eines Bildes Spiele- und Multimedia-Programmierung 6
S Problem beim laden eines Bildes in einer Methode Spiele- und Multimedia-Programmierung 14
N Bildposition innerhalb eines anderen Bildes ermitteln Spiele- und Multimedia-Programmierung 2
G rotation eines würfels Spiele- und Multimedia-Programmierung 9
G Bewegung eines Grafikobjektes Spiele- und Multimedia-Programmierung 7
A Programmieren eines Bruchrechners Spiele- und Multimedia-Programmierung 3
H Decke zeichnen mit Hilfe eines Polygons Spiele- und Multimedia-Programmierung 2
J Rotieren eines 2D Images endet in Java heap space Error Spiele- und Multimedia-Programmierung 15
W Affine Transformation, Rotieren eines Objekts Spiele- und Multimedia-Programmierung 2
S fließende/bewegende Striche eines Auswahlrechtecks Spiele- und Multimedia-Programmierung 9
A Bounds eines gedrehten Objekts berechnen Spiele- und Multimedia-Programmierung 30
T Erstellen eines ausdruckbaren Formulars Spiele- und Multimedia-Programmierung 5
T Umsetzung eines 2D Jump and Runs Spiele- und Multimedia-Programmierung 7
T Brightness eines Bildes [DRINGEND] Spiele- und Multimedia-Programmierung 2
S Java3D - mehrere Instanzen eines Geometrieobjektes erzeugen Spiele- und Multimedia-Programmierung 3
ARadauer Grauwerte eines jpg ermitteln Spiele- und Multimedia-Programmierung 4
A Anzeigen eines Grapfen Spiele- und Multimedia-Programmierung 13
R Die korrekte Breite/Höhe eines Bildes wird nicht erkannt. Spiele- und Multimedia-Programmierung 2
S Problem bzgl. Umsetzung eines Rollenspiel Spiele- und Multimedia-Programmierung 6
M Ausschneiden eines Bereichs / Avatar Spiele- und Multimedia-Programmierung 2
G Ermitteln eines Punktes in einer anderen TransformGroup Spiele- und Multimedia-Programmierung 2
M Frage eines Anfängers Spiele- und Multimedia-Programmierung 3
DEvent [2D] Farbe bestimmten Pixels eines Bildes ändern Spiele- und Multimedia-Programmierung 3
V Wie berechnet man das Bild eines Schwarzen Loches in Java? Spiele- und Multimedia-Programmierung 10
G Breite eines Strings Spiele- und Multimedia-Programmierung 2
S Text an einer Seite eines Cubes Spiele- und Multimedia-Programmierung 7
F Image eines bestimmten Bereichs eines JPanels erstellen Spiele- und Multimedia-Programmierung 4
N Grafik als Hintergrund eines Rechtecks verwenden? Spiele- und Multimedia-Programmierung 4
N Rundenstrategiespiel - Problem beim Drehen eines Bildes Spiele- und Multimedia-Programmierung 18
F Brauche Hilfe bei Bewegung eines Rechtecks [Applet] Spiele- und Multimedia-Programmierung 5
T Java2D Spiel, beim Hinzufügen eines Bildes ruckelt das ganze Spiele- und Multimedia-Programmierung 3
F Position eines Objektes auslesen. Spiele- und Multimedia-Programmierung 7
W Rotation eines Objektes Spiele- und Multimedia-Programmierung 2
M Zerschneiden eines Bildes mit Wellenlinien? Spiele- und Multimedia-Programmierung 2
S Simulation in der Art eines Schachbrett Spiele- und Multimedia-Programmierung 2
A 2-Achsen Rotation eines Würfels Spiele- und Multimedia-Programmierung 4
L nicht sichtbare Kanten eines Würfels Spiele- und Multimedia-Programmierung 2
O Problem beim Aufrufen des Spiels von einem Menü Spiele- und Multimedia-Programmierung 7
L Umbau des Spiels von Quaxli Spiele- und Multimedia-Programmierung 4

Ähnliche Java Themen

Neue Themen


Oben