problem z odgrywaniem dzwieku

0

mam prosta klase :

import java.applet.*;

public class Dzwiek extends Applet
{
public Dzwiek()
{
muzyczka = getAudioClip( getDocumentBase(), "muzyczka.wav");

}

public void graj()
{
muzyczka.play();

}

AudioClip muzyczka;
}

w innej klasie :

Dzwiek dz = new Dzwiek();
dz.graj();

problem jest taki, ze nic nie odgrywa, zwraca :

xception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at java.applet.Applet.getDocumentBase(Unknown Source)
at Dzwiek.<init>(Dzwiek.java:7)
at Obsługa_Klawiszy.keyPressed(Obsługa_Klawiszy.java:23)
at java.awt.Component.processKeyEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Window.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

w czym jest problem ?

0

a z czego odpalasz ten applet? z jakiejś przeglądarki appletów czy normalnie z poziomu www na przykład w operze?

poza tym do odtwarzania dźwięków sugerowałbym skorzystać z gotowych rozwiązań jakim jest JavaMediaFramework (opensource), która implementuje to wszystko

0

Hej!

Sproboj uzyc tej metody, odtwarza *.wav i *.au

public void play(String soundName) {
try {
File soundFile = new File(soundName); //alert.au
AudioInputStream soundInputStream = AudioSystem.getAudioInputStream(soundFile);

           /* jesli znasz parametry
              AudioFormat format = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,
                                                  AudioSystem.NOT_SPECIFIED,
                                                  16, 2, 4,
                                                  AudioSystem.NOT_SPECIFIED, true);
             DataLine.Info info = new DataLine.Info(Clip.class, format);
           */
           AudioFormat format = soundInputStream.getFormat();
           DataLine.Info info = new DataLine.Info ( Clip.class, soundInputStream.getFormat(),
           ( (int)soundInputStream.getFrameLength() * format.getFrameSize()) );
                                   
           Clip clip = (Clip)AudioSystem.getLine(info);
           clip.open(soundInputStream);
           clip.start();                      
        } catch (IOException ioe) {
               ioe.printStackTrace();
    } catch (LineUnavailableException lue) {
           lue.printStackTrace();
    } catch (UnsupportedAudioFileException uafe) {
           uafe.printStackTrace();
    }
    
}

pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1