Java Applet:播放音乐失败

时间:2014-03-28 17:11:36

标签: java audio applet awt

我想在我的applet中播放spacemusic.au。音乐文件位于Game / src和Game / bin中。 但是,单击“循环播放”时,它不会播放音乐。因为它是.au文件,所以应该很好玩。会导致这种情况的原因是什么?

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class playMusic extends Applet 
implements ActionListener{
   Button play,stop;
   AudioClip audioClip;
   public void init(){
      play = new Button("  Play in Loop  ");
      add(play);
      play.addActionListener(this);
      stop = new Button("  Stop  ");
      add(stop);
      stop.addActionListener(this);
      audioClip = getAudioClip(getCodeBase(), "spacemusic.au");
   }
   public void actionPerformed(ActionEvent ae){
      Button source = (Button)ae.getSource();
      if (source.getLabel() == "  Play in Loop  "){
         audioClip.play();
      }  
      else if(source.getLabel() == "  Stop  "){
         audioClip.stop();
      }
   }
}

3 个答案:

答案 0 :(得分:1)

您无法以这种方式比较字符串

if (source.getLabel() == "  Play in Loop  "){

你应该使用.equals

if (source.getLabel().equals("  Play in Loop  ")){

无论如何,使用布尔变量来表示音乐是否正在播放

答案 1 :(得分:1)

通过创建一个音乐文件夹并将音乐文件放在那里并引用为"音乐/ spacemusic.au"解决了这个问题。请参阅本教程:https://www.youtube.com/watch?v=UaNf53WflLI

答案 2 :(得分:0)

  

打印 getCodeBase()的值,现在您可以找出问题所在。

     

它是否指向正确的位置,如果是,则存在spacemusic.au文件?

替换你actionPerformed方法(使用equals代替==或使用==作为对象引用本身)

public void actionPerformed(ActionEvent ae) {
    Button source = (Button) ae.getSource();
    if (source == play) {
        audioClip.play();
    } else if (source == stop) {
        audioClip.stop();
    }
}