【问题标题】:Stop the music in another class? [closed]在另一个班级停止音乐? [关闭]
【发布时间】:2020-12-26 21:52:59
【问题描述】:

我很新,不知道如何在其他课程中停止我的音乐。我的想法是,我按下一个按钮,音乐就会停止。

public class Musik {
    public static synchronized void music(String song) {
        final String songname= song;
        new Thread(new Runnable() {
            @Override
            public void run() {
                while (true){
                    try{

                        Clip clip = AudioSystem.getClip();
                        AudioInputStream input=AudioSystem.getAudioInputStream(new File(songname));
                        clip.open(input);
                        clip.loop(clip.LOOP_CONTINUOUSLY);
                        Thread.sleep(clip.getMicrosecondLength()/1000);


                    }catch (Exception e){
                        e.printStackTrace();
                    }
                }
            }
        }).start();
        
    }
} 

我想要音乐停止的按钮,但我没有任何线索。 stop();close(); 或类似的东西根本不起作用。

public void actionPerformed(ActionEvent e){
    if (button==e.getSource()){
       //Musik.close(); doesnt work
    }

【问题讨论】:

  • 您需要将Clip的定义放在music方法之外。或者将线程分配给一个变量并杀死它。

标签: java javafx audio-player background-music


【解决方案1】:

您可以将布尔值实现为标志。而不是 while(true),创建一个可能称为 isPlaying 的布尔值。并让它同时(正在播放)。创建一个函数 close 将布尔值设置为 false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-06
    • 2012-05-20
    相关资源
    最近更新 更多