gpt4 book ai didi

java - 如何以与制作音频的方法不同的方法暂停和恢复音频?

转载 作者:太空宇宙 更新时间:2023-11-04 09:45:57 25 4
gpt4 key购买 nike

我正在尝试制作一个游戏并尝试制作“静音”和“取消静音”按钮,但我不知道如何制作它,因此当您按下按钮时,它会停止在程序开始时播放的同一剪辑。 (当然使用不同的方法)。我试图公开该剪辑和音频,但我不断收到错误消息,我不知道为什么。

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();
}
});

我期待剪辑的输出停止,然后您可以让它再次播放或保持静音。在这种情况下,当我按下“静音”按钮时,它只是显示错误。

最佳答案

因此,在单击静音按钮时运行的代码中,您将创建一个新的 TowerDefense 对象,该对象将提供音乐的文件路径。这就是问题所在。程序中存在已正在播放的剪辑。创建新的 TowerDefense 对象不会自动让您访问正在播放的剪辑。

确保在调用 playMusic 方法的同一对象上调用pauseMusic 方法。

因此,如果您已经在程序中创建了一个 TowerDefense 对象并调用了 playMusic,那么请为您的 Action 监听器提供对该对象的访问权限,并使用现有对象来调用pauseMusic。

关于java - 如何以与制作音频的方法不同的方法暂停和恢复音频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55427573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com