如何在特定时间内暂停剪辑/对象?

陈洁仪

嗨,Stackoverflow!

所以基本上,我的Java程序中有两个音频剪辑,我希望其中一个在某个时间停止,另一个在某个时间开始。

我将尽力解释代码。http://pastebin.com/1zGdb30x Music.java

    package testingground;


import java.io.IOException;
import java.net.URL;

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;


public class Music {
    public void musictwo() {
        URL url;
        try {
            url = new URL("file:///D:/Yes/GUI/song.wav");
             Clip clip = AudioSystem.getClip();
            AudioInputStream ais = AudioSystem.
              getAudioInputStream( url );
            clip.open(ais);
            clip.loop(100);

        } catch (UnsupportedAudioFileException | IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (LineUnavailableException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }


    public void musicone() {
        URL url;
        try {
            url = new URL("file:///D:/Yes/GUI/rival.wav");
            Clip clip = AudioSystem.getClip();
            AudioInputStream ais = AudioSystem.
              getAudioInputStream( url );
            clip.open(ais);
            clip.loop(100);
        } catch (UnsupportedAudioFileException | IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (LineUnavailableException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

http://pastebin.com/nGm4DZfr Program.java

package testingground;

import javax.swing.JOptionPane;

public class Program {
    public static void main(String[] args) {
        System.out.println("The first song should play now!");
        Music a = new Music();
        a.musicone();
        System.out.println("The second song should play now!");
        a.musictwo();
        JOptionPane.showMessageDialog(null,"Press 'ok' to end the application.");
    }
}

在Music.java中,我有音频文件在工作,它们只是本地.wav文件,仅在我的计算机上可用。在program.java中,输出是musicone和musictwo都同时播放。有没有办法让muscone播放,停止然后再播放musictwo?

我尝试过的事情--在program.java中有一个if和else语句来执行clip.stop()。没有错误,只是没有用。-从program.java中使用if和else布尔值在Music.java中执行clip.stop()。没有语法错误,只是没有用。

Radiodef

据我了解您的问题的方式,您可以使用LineListener

例如,这是一个遍历List的类,每次当前流完成时播放下一个流:

class Playlist implements LineListener {
    private final List<AudioInputStream> list = new ArrayList<>();
    private Clip clip;
    private int next;

    @Override
    public void update(LineEvent evt) {
        if(evt.getType() == LineEvent.STOP) {
            try {
                playNext();
            } catch(LineUnavailableException | IOException e) {
                e.printStackTrace();
            }
        }
    }

    void enqueue(AudioInputStream ais) {
        synchronized(this) {
            list.add(ais);
        }
    }

    void playNext() throws LineUnavailableException, IOException {
        synchronized(this) {
            if(list.isEmpty()) {
                throw new IllegalStateException();
            }
            if(clip != null) {
                if(clip.isRunning()) clip.stop();
                if(clip.isOpen()) clip.close();
            }

            clip = AudioSystem.getClip();
            clip.addLineListener(listener);
            try {
                clip.open(list.get(next));
            } finally {
                next = (next + 1) % list.size();
            }
            clip.start();
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在特定时间内执行方法?

来自分类Dev

如何在一定时间内暂停进程?

来自分类Dev

蝗虫:如何使蝗虫在特定时间内运行

来自分类Dev

如何在固定时间内为特定位置下方的指示箭头设置动画?

来自分类Dev

如何在Debian中阻止cron作业在特定时间内运行?(“游戏” /“表演模式”)

来自分类Dev

如何在恒定时间内获取每个元素?

来自分类Dev

如何在恒定时间内获取每个元素?

来自分类Dev

在特定时间内运行功能

来自分类Dev

在特定时间内减少变量

来自分类Dev

如何在一段时间内在Python上的每个特定时间运行函数?

来自分类Dev

如何在特定时间内在Windows 7中的硬盘上搜索所有文件?

来自分类Dev

Unity 3D在GetButtonDown上的特定时间内移动对象

来自分类Dev

如何检查特定时间内是否收到响应包?

来自分类Dev

如何使Label在特定时间内可见,然后在JavaFX中不可见?

来自分类Dev

Android-在特定时间内更改按钮的颜色

来自分类Dev

PHP检查日期是否在特定时间内

来自分类Dev

jQuery-在特定时间内显示随机元素

来自分类Dev

如何在不到一秒的时间内暂停Objective-C

来自分类Dev

如何在一段时间内暂停部分功能?

来自分类Dev

如何在不到一秒的时间内暂停Objective-C

来自分类Dev

如何在一定时间内更改变量

来自分类Dev

如何在恒定时间内生成无偏随机bigint

来自分类Dev

字符串pop_back如何在恒定时间内实现?

来自分类Dev

如何在指定时间内使用cassandra将数据导出到csv?

来自分类Dev

使用Rails如何在给定时间内查找用户预订的课程

来自分类Dev

如何在指定时间内获取curl请求的HTML

来自分类Dev

如何在python中使Tkinter在一定时间内完成每个代码?

来自分类Dev

如何在恒定时间内在N大小的列表中查找整数?

来自分类Dev

如何在一定时间内循环执行此功能?

Related 相关文章

  1. 1

    如何在特定时间内执行方法?

  2. 2

    如何在一定时间内暂停进程?

  3. 3

    蝗虫:如何使蝗虫在特定时间内运行

  4. 4

    如何在固定时间内为特定位置下方的指示箭头设置动画?

  5. 5

    如何在Debian中阻止cron作业在特定时间内运行?(“游戏” /“表演模式”)

  6. 6

    如何在恒定时间内获取每个元素?

  7. 7

    如何在恒定时间内获取每个元素?

  8. 8

    在特定时间内运行功能

  9. 9

    在特定时间内减少变量

  10. 10

    如何在一段时间内在Python上的每个特定时间运行函数?

  11. 11

    如何在特定时间内在Windows 7中的硬盘上搜索所有文件?

  12. 12

    Unity 3D在GetButtonDown上的特定时间内移动对象

  13. 13

    如何检查特定时间内是否收到响应包?

  14. 14

    如何使Label在特定时间内可见,然后在JavaFX中不可见?

  15. 15

    Android-在特定时间内更改按钮的颜色

  16. 16

    PHP检查日期是否在特定时间内

  17. 17

    jQuery-在特定时间内显示随机元素

  18. 18

    如何在不到一秒的时间内暂停Objective-C

  19. 19

    如何在一段时间内暂停部分功能?

  20. 20

    如何在不到一秒的时间内暂停Objective-C

  21. 21

    如何在一定时间内更改变量

  22. 22

    如何在恒定时间内生成无偏随机bigint

  23. 23

    字符串pop_back如何在恒定时间内实现?

  24. 24

    如何在指定时间内使用cassandra将数据导出到csv?

  25. 25

    使用Rails如何在给定时间内查找用户预订的课程

  26. 26

    如何在指定时间内获取curl请求的HTML

  27. 27

    如何在python中使Tkinter在一定时间内完成每个代码?

  28. 28

    如何在恒定时间内在N大小的列表中查找整数?

  29. 29

    如何在一定时间内循环执行此功能?

热门标签

归档