Java小程序:播放音乐失败
我想在我的小程序中播放spacemusic.au。音乐文件位于Game/src和Game/bin中。 但是,当我单击“循环播放”时,它不会播放音乐。因为它是.au文件,所以应该很适合玩。这是什么原因造成的Java小程序:播放音乐失败,java,audio,applet,awt,Java,Audio,Applet,Awt,我想在我的小程序中播放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
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();
}
}
}
不能用这种方式比较字符串
if (source.getLabel() == " Play in Loop "){
你应该使用.equals
if (source.getLabel().equals(" Play in Loop ")){
无论如何,使用一个布尔变量来表示音乐是否正在播放通过创建一个音乐文件夹并将音乐文件放在其中,并引用为“music/spacemusic.au”来解决此问题参见本教程: 打印getCodeBase()的值,现在您可以找出问题所在 它是否指向正确的位置?如果是,则spacemusic.au文件是否存在 替换您的
actionPerformed
方法(使用equals代替==或使用==作为对象引用本身)
java控制台上的异常是什么?没有异常。它只是不播放音乐,好像它找不到文件,但它就在那里。1)为什么要编写小程序?如果是由于老师的特殊要求,请参考。2) 为什么是AWT而不是Swing?关于放弃使用AWT组件的许多好理由,请参见我的答案。或者检查source==play和source==stop谢谢您的建议。但这并没有解决问题。还是不玩?你确定文本是平等的吗?能否在打印的actionPerfomed中添加调试消息。getLabel()?我在actionPerfomed中添加了调试消息,它正在打印。但是,我仍然听不到程序中的任何音乐。是否在audioClip.play()和audioClip.stop()之前添加了调试消息?
public void actionPerformed(ActionEvent ae) {
Button source = (Button) ae.getSource();
if (source == play) {
audioClip.play();
} else if (source == stop) {
audioClip.stop();
}
}