我正在尝试制作游戏,并试图制作“静音”和“取消静音”按钮,但是我无法弄清楚如何制作,因此,当您按下该按钮时,它会停止在程序的开始。 (当然使用不同的方法)。 我试图将剪辑和音频公开,但是我不断收到错误消息,我不确定为什么。
public class TowerDefense
{
String filepath = "MenuTheme.wav";
private Clip clip;
void playMusic(String musicLocation)
{
try{
File musicPath = new File(musicLocation);
if(musicPath.exists())
{
AudioInputStream audioInput = AudioSystem.getAudioInputStream(musicPath);
clip = AudioSystem.getClip();
clip.open(audioInput);
clip.start();
clip.loop(Clip.`LOOP_CONTINUOUSLY`);
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
void pauseMusic(String musicLocation2)
{
long clipTimePosition = clip.getMicrosecondPosition();
clip.stop();
}
==============
//this is in a different private method called Options
panel.setButtonsActionListener2(**new** ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
frame.dispose();
TowerDefense musicObject = new TowerDefense();
musicObject.pauseMusic(filepath);
Options();
}
});
我期望剪辑的输出停止,然后您可以使其再次播放或保持静音。在这种情况下,当我按下“静音”按钮时,它只是说错误。
答案 0 :(得分:0)
因此,在单击静音按钮时运行的代码中,您正在创建一个新的TowerDefense对象,该对象提供了音乐的文件路径。这就是问题所在。程序中已经存在正在播放的剪辑。创建新的TowerDefense对象不会自动为您提供正在播放的剪辑的访问权限。
请确保在调用playMusic方法的同一对象上调用pauseMusic方法。
因此,如果您已经在程序中创建了一个TowerDefense对象并调用了playMusic,则为操作侦听器提供对该对象的访问权限,并使用现有的对象来调用pauseMusic。