Wav bestanden spelen en stoppen met java?

Status
Niet open voor verdere reacties.

BasDeJonge

Gebruiker
Lid geworden
1 mrt 2011
Berichten
102
Hallo!

Voor school maak ik een spelletje en daar hoort natuurlijk muziek en geluidjes bij, dus ik heb geprobeerd een wav-speler te bouwen, maar nu heb ik een probleem.
Hij speelt namelijk wel, maar hij stopt niet... Dit is niet erg handig. Kan iemand mij misschien vertellen hoe ik de spelende muziek kan stoppen?

Dit is wat ik tot nu toe heb: (Het nummer heet SP0000 en is een wav bestand. Hij speelt prima af!)


import java.io.*;

import sun.audio.*;

public class PlayAudio {

public void playSound(){
try{
AudioPlayer p = AudioPlayer.player;
AudioStream as = new AudioStream(new FileInputStream("SP0000.wav"));
p.start(as);
}
catch(IOException IOE){}
}

}


Alvast bedankt voor alle hulp! Graag simpele antwoorden want ik ben nog niet zo goed met java.
 
Laatst bewerkt:
Sorry maar hier kan ik even geen wijs uit. Dit bestand kan ik niet openen. Doe ik iets verkeerd? Kun je anders gewoon de code hier plakken?
Wel bedankt voor de reactie!
 
open zip
er staat een html in die laat het werken
er staat een gecompileerder versie in
er staat een .java bestand met source in
er staat geen wave in maar als je er een bestand plaatst met naam
LAUGH0.WAV
LAUGH1.WAV
LAUGH2.WAV
LAUGH3.WAV
LAUGH4.WAV

zal je zien wat er gebeurt (afspelen van 0 tot en met 3 of 4)
waves lukten niet om deze ook toe te voegen daar ze te groot waren om op het forum te plaatsen


Code:
import java.aw²t.*;
import java.applet.AudioClip;

public class LaughTrack extends javax.swing.JApplet
	implements Runnable{
	
	// Aanmaken van een nieuw AudioClip-object
	AudioClip[] laugh = new AudioClip[4];
	// Declareren van de thread runner
	Thread runner;
	
	public void start(){
		// Het object runner is gelijk aan null als hij nog niet gestart is!
		if (runner == null){
			runner = new Thread(this);
			runner.start();// Starten van de thread runner
			// Dit zorgt er dus voor dat de methode run() afhgehandeld wordt
		}
	}
	
	public void stop(){
		if (runner != null){
			for (int i=0; i<laugh.length; i++)
				if (laugh[i] != null)
					// Stopt het geluid
					laugh[i].stop();
			runner = null;// Stoppen van de thread runner
		}
	}
	
	public void init(){
		for (int i=0; i<laugh.length; i++)
			/*
			* Geluidsbestand laden in een AudioClip object
			* U kunt de volgende methoden aanroepen om toe te passen op een AudioClip object
			* play() - geluid éénmaal afspelen
			* loop() - geluid herhaaldelijk afspelen
			* stop() - stopt het geluid
			*/
			laugh[i] = getAudioClip(getCodeBase(), "laugh"+i+".wav");
	}
	
	// Wat het applet eigenlijk doet!
	public void run(){
        	for (int i=0; i<laugh.length; i++)
            		if (laugh[i] != null)
            			// Het geluid herhaaldelijk afspelen
            			// Indien hier de methode laugh[i].play() dan éénmaal afspelen
                		laugh[i].loop();
        	
        	// Maken van het Thread-object thisThread en instellen op de huidige waarde met currentThread()
        	Thread thisThread = Thread.currentThread();
        	// Foutafvang in geval dat het AudioClip-object de waarde null bevat (dus het geuildsbestand niet gevonden)
        	while (runner == thisThread) {
            		try {
                		Thread.sleep(5000);// Pauze gedurende 5000 milliseconden
            		} catch (InterruptedException e) { }
        	}
   	}

	public void paint(Graphics screen){
		Graphics2D screen2D = (Graphics2D) screen;
		screen2D.drawString("Playing sounds ...", 10, 50);
	}
}
 
Laatst bewerkt:
Bedankt voor de superduidelijke reactie! Dit verklaard een hoop. Ik heb echter geen tijd meer om er naar te kijken en dat zal ik dan ook morgen doen. Als ik dan nog een vraag heb zal ik hem hier posten, en anders laat ik het even weten als het werkt! ;D
Bedankt!!
 
Ik snap het nog steeds niet. Als ik `new laughtrack` doe en vervolgens run of start aanroep gebeurt er helemaal niets, terwijl ik wel de 5 laugh bestanden heb...
 
Let op deze moeten in het zelfde path staan.
?? wat als je de gecompileerde versie in je map zet??
 
Eigenlijk is het enige wat ik nodig heb een stop-methode op de Music Player die ik al had. Ik wil niet vervelend doen en ik respecteer alle hulp maar ik kan hier niet zo veel mee. Dit is niet helemaal wat ik zoek. Het zou fijn zijn als u me zou kunnen helpen met een stop-methode! Daarvoor heb ik even vlug een nieuw topic aangemaakt. Sorry voor alle onduidelijkheid. Als u me alsnog wilt helpen kunt u dat hier doen http://www.helpmij.nl/forum/showthread.php/746586-Hulp-nodig-met-methode! Dat zou ik enorm waarderen!
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan