我想在我的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();
}
}
}
答案 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();
}
}