可是 annoyingFile和annoying都不为null

解决方案 »

  1.   

    参考一下:(我也没有用过)希望能对你有帮助! AudioClip接口播放
    循环
    停止恢复和播放声音最简单的方法是通过Applet类的play()方法。调用play()方法有如下二种方式: play()-带有一个参数,一个 URL对象,装载并演奏储存在 URL处的声音片断。play()-带有二个参数,基本 URL和文件夹路径名,装载并演奏声音文件。第一参数经常是对getCodeBase()或 getDocumentBase()的调用。 下列代码片断举例说明了直接播放 hello.au的方法。AU文件与小应用程序位于相同文件夹或目录。play(getCodeBase(), "hello.au");play()一旦被调用立刻开始恢复和播放声音。如果声音文件不能被查找,将不会有出错信息,仅仅是沉默。
    启动和停止声音文件,或循环播放,你必须用 applet的 getAudioClip方法把它装载进入 AudioClip对象,类似上面play()方法的参数,getAudioClip方法要用一个或两个参数,当作播放的指示。 第一个或唯一的一个参数是 URL参数,用来指示声音文件的位置,第二参数是文件夹路径指针。 下列代码行举例说明加载声音文件进入剪贴对象: AudioClip co = getAudioClip(getCodeBase(), "horns.wav");getAudioClip()方法仅仅能被applet内调用。随着JAVA2的引入,应用程序也能用Applet类的newAudioClip方法装入声音文件。前一例子可以改写如下以用于Java应用程序:AudioClip co = newAudioClip("horns.wav");在你已创建 AudioClip对象之后,你能用该对象调用play()、loop()以及stop()方法。如果 getAudioClip或 newAudioClip方法不能找到指定的声音文件, AudioClip对象的值将是空的。试着播放空对象会导致出错,所以标准的过程首先是对该条件进行检测。
    接下来是一个完整的程序设计示例,该程序将产生一个applet,当鼠标在该小应用程序applet范围内按下时会播放 flute+hrn+mrmba.au音乐样本。此AU示例文件与applet在相同目录或文件夹下的。import java.applet.*;
    import java.awt.event.*;public class PlayAudio extends Applet
    implements MouseListener {
    AudioClip audio;public void init() {
    audio = getAudioClip(getDocumentBase(),
    "flute+hrn+mrmba.au");
    addMouseListener(this);
    }public void mousePressed(MouseEvent evt) {
    if (audio != null) audio.play();
    }public void mouseEntered (MouseEvent me) {
    }public void mouseExited (MouseEvent me) {
    }public void mouseClicked (MouseEvent me) {
    }public void mouseReleased(MouseEvent me) {
    }}注意: 在许多JAVA2技术书籍中,mouseDown()方法确实是JAVA 1.0事件模型的一部分。使用该方法会有一定的危险,因为该方法在将来可能不会被支持。在JAVA2平台下将MouseListener与mousePressed结合使用是优先的选择。
      

  2.   

    还是不行,一点声音都没有。
    有谁碰过类似的问题吗?
    还有,如果换成下面的代码设置成Application就可以发声,
    但是在一个applet中引用它又不行了,说是不支持的文件格式。
    自己刚刚入门,希望能得到版主和各位的帮助,谢谢。package Sounds;import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.sound.midi.*;
    import javax.sound.sampled.*;
    import java.io.File;
    import java.io.InputStream;
    import java.io.FileInputStream;
    import java.io.BufferedInputStream;
    import java.util.Vector;
    import java.net.URL;public class SoundThrd extends Thread implements LineListener, MetaEventListener
    {  URL fName;
      Sequencer sequencer;
      boolean midiEOM, audioEOM;
      Synthesizer synthesizer;
      Object currentSound;
      boolean bump;
      public SoundThrd(URL fileName) {
        fName=fileName;
      }
      public void open() {
        try {
          sequencer = MidiSystem.getSequencer();
          } catch (Exception ex) { ex.printStackTrace(); return; }
          sequencer.addMetaEventListener(this);
      }
      public void close() {
        if (sequencer != null) {
          sequencer.close();
        }
      }  public boolean loadSound(Object object) {
        if (object instanceof URL) {
          try {
            currentSound = AudioSystem.getAudioInputStream((URL) object);
          } catch(Exception e) {
            e.printStackTrace();
            currentSound = null;
            return false;
          }
        }
        // user pressed stop or changed tabs while loading
        if (sequencer == null) {
          currentSound = null;
          return false;
        }    if (currentSound instanceof AudioInputStream) {
          try {
            AudioInputStream stream = (AudioInputStream) currentSound;
            AudioFormat format = stream.getFormat();
            /**
             * we can't yet open the device for ALAW/ULAW playback,
             * convert ALAW/ULAW to PCM
             */
            if ((format.getEncoding() == AudioFormat.Encoding.ULAW) ||
                (format.getEncoding() == AudioFormat.Encoding.ALAW))
            {
              AudioFormat tmp = new AudioFormat(
                  AudioFormat.Encoding.PCM_SIGNED,
                  format.getSampleRate(),
                  format.getSampleSizeInBits() * 2,
                  format.getChannels(),
                  format.getFrameSize() * 2,
                  format.getFrameRate(),
                  true);
                  stream = AudioSystem.getAudioInputStream(tmp, stream);
                  format = tmp;
            }
            DataLine.Info info = new DataLine.Info(
                Clip.class,
                stream.getFormat(),
                ((int) stream.getFrameLength() *
                format.getFrameSize()));
                Clip clip = (Clip) AudioSystem.getLine(info);
                clip.addLineListener(this);
                clip.open(stream);
                currentSound = clip;
          } catch (Exception ex) {
            ex.printStackTrace();
            currentSound = null;
            return false;
          }
        }        return true;
      }    public void playSound() {
          midiEOM = audioEOM = bump = false;
          if (currentSound instanceof Clip) {
            Clip clip = (Clip) currentSound;
            clip.start();
            try {sleep(99); } catch (Exception e) { }
            while ((clip.isActive()) && !bump) {
              try { sleep(99); } catch (Exception e) {break;}
            }
            clip.stop();
            clip.close();
          }
          currentSound = null;
        }
        public void update(LineEvent event) {
          if (event.getType() == LineEvent.Type.STOP) {
            audioEOM = true;
          }
        }
        public void meta(MetaMessage message) {
          if (message.getType() == 47) {  // 47 is end of track
            midiEOM = true;
          }
        }
        public void run() {
          int i=1;
          do {
            if( loadSound(fName) == true ) {
                playSound();
              }
              i++;
          } while (i<10);
            currentSound = null;
        }    public static void main(String args[]) {
          URL tmp=null;
          try{
            tmp=new URL("file:///D:/bong.wav");
          }catch(Exception e){};
          final SoundThrd snd=new SoundThrd(tmp);
          snd.open();
          JFrame f = new JFrame("Sound Box");
          f.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
              snd.close();
              System.exit(0);
            }
          });
          f.pack();
          Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
          int w = 750;
          int h = 340;
          f.setSize(w, h);
          f.setVisible(true);
          snd.run() ;
        }
    }
      

  3.   

    applet中的代码:
                try{
                  snd=new SoundThrd(new URL("http://192.168.49.49:8080/sound/msg.wav"));
    //上面的url是有效的
                  snd.open();
                }catch(Exception e){
                  System.out.print("NoSoundFound");
                };snd.start();
    一点声音都没有?是不是跟applet的限制有关?
      

  4.   

    结账,发现有些wav文件能播放,有些不能,
    真是很faint了,
    我用了oicq的msg.wav就不行,说不支持该文件的格式,
    最后用jdk1.3.1中的javasound例子中带的bong.wav,
    就可以发声了,真真是faint到死。
    同是wav,还有不同的版本的?
    谁能说说?