Sound Funktioniert aber nur sound

trucemax

Grünschnabel
Code:
package graphics;

import java.applet.Applet;
import java.applet.AudioClip;
import java.io.*;
import java.net.MalformedURLException;
import java.util.ArrayList;

import javax.sound.midi.*;
import javax.sound.sampled.*;

import wuerfel.Wuerfel;

public class Sound extends Thread{

	private AudioClip sound;
	private String filename;
	private ArrayList <String> lieder = new ArrayList<String>();
	private ArrayList <Integer> dauer = new ArrayList<Integer>();

	private int zeilen = -1;
	private int gespieltesLied;
	private boolean random = false;
	

	
	public Sound(String name){
			filename = name;
	}
	
	public Sound(){

		 BufferedReader liederTxtFile 	= null;
		 BufferedReader liederDauer		= null;
		try {
			liederTxtFile 	= new BufferedReader(new FileReader("audio/lieder.txt"));
			liederDauer	    = new BufferedReader(new FileReader("audio/lieddauer.txt"));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}

		try {
			do{
				lieder.add(liederTxtFile.readLine());
				zeilen ++;
				System.out.println(lieder.get(zeilen));
			} while(lieder.get(zeilen) != null);
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		for (int i = 1; i <= zeilen; i++){
			try {
				dauer.add(Integer.parseInt(liederDauer.readLine()));
			} catch (NumberFormatException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
			System.out.println(dauer.get(i -1));
		}
		lieder.remove(zeilen);	//entfernt letzte zeile, welche null ist
		random = true;
	}
			
		public void run(){
			if (random){
				gespieltesLied = ((int)(Math.random()*zeilen - 1));
				filename = lieder.get(gespieltesLied);
			}
			
				System.out.println("Es wird " + filename + " gespielt");

				File f = new File( filename );
				try {
					sound = Applet.newAudioClip( f.toURL() );
				} catch (MalformedURLException e) {
					e.printStackTrace();
				}
				sound.play();
			
			if (random){			
				Wuerfel.sleeping(dauer.get(gespieltesLied) * 1000); //die länge des liedes in ms
				if (random)
					run();
			} 
		}
	
	public void stopAudio(){
		sound.stop();
		Wuerfel.sleeping(100);
		random = false;
	}
}

Hallo mein Problem ist das die sound datei abspielt aber nur diese es öffnet sich nciht mehr das fenster und wenn ich in dieser sound klasse das sleeping wegmache funktioniert es aber es spielt halt dann nur eine datei ab. ich mmöchte aber das es alle nacheinander abspielt und gleichzeitig sich das fenster öffnet. Kann mir jemand Helfen wo liegt mein fehler ach ncoh was wenn ich das fenster öffne und erst später die sound datei abspiele dann ist mein fenster komplett blockiert man kann dort nichts mehr machen.
 
Ich habe keine Ahnung was deine Klasse Wuefel tut.

Aber warum ruft sich deine run-Methode z.B. selber auf? Lässt du das abspielen des Sounds und die GUI in verschiedenen Threads laufen und startest du die Threads auch mit start (run erstellt keinen neuen Thread!)?
 
Zurück