【问题标题】:[A]How to make a MP3 repeat in javafx?[A]javafx如何让MP3重复播放?
【发布时间】:2018-12-23 01:38:39
【问题描述】:

我希望我的 mp3 文件在完成后再次重复。但我无法创建循环来重复播放我的文件 (我使用了这段代码,但它只在完成后播放我的文件的第一秒)

AudioClip myMusic ....   
myMusic.setCycleCount(AudioClip.INDEFINITE);
myMusic.play();

编辑: 我使用了 MediaPlayer,但它的循环计数器无法正常工作,例如我第一次播放我的 mp3 文件时它播放了 2 次,而在第 3 次播放时它突然停止 第二次我再次运行我的应用程序,它播放了 1 次,在第二次播放的一半中停止 这是我的代码:

URL resource = getClass().getResource("abcd.mp3");
     MediaPlayer a =new MediaPlayer(new Media(resource.toString()));
     a.setCycleCount(MediaPlayer.INDEFINITE);

 a.play();

有什么想法吗?在此先感谢。

【问题讨论】:

  • 什么是myMusic.bgSound?它不是AudioClip 的字段,假设myMusicAudioClip
  • 已编辑:myMusic 是一个音频剪辑
  • 您应该将您的答案作为对这个问题的回答发布,而不是在问题本身中。

标签: javafx


【解决方案1】:

我找到了我使用 setOnEndOfMedia 方法的解决方案:

 URL resource = getClass().getResource("abcd.mp3");
 MediaPlayer a =new MediaPlayer(new Media(resource.toString()));
 a.setOnEndOfMedia(new Runnable() {
       public void run() {
         a.seek(Duration.ZERO);
       }
   });
  a.play();

【讨论】:

  • 确保尽快将此问题标记为答案(小绿色复选标记)。
  • 但是为什么原来的解决方案不起作用?我也有同样的问题。当我使用 setCycleCount(AudioClip.INDEFINITE); 我的 wav 文件重复大约 5 次然后停止。 [更新] 你的解决方案对我不起作用
  • @Zeta.Investigator 希望在您仍有需要时为您提供解决此问题的方法。如果您要使用 MediaPlayer 播放声音,则需要将其放置在附加到当前场景的 MediaView 中。这就是它停止播放的原因。有时,如果您的窗口失去焦点,它将停止播放。如果您将 MediaPlayer 放在 MediaView 中并将其放在您的窗格中,它不应该停止播放。
  • @Zeta.Investigator 当我第一次开始使用它们时,我有点想自己,但我一直想知道为什么这个愚蠢的东西一直停止。一旦我将它放在我的根 Stackpane 中的 MediaView 中,问题就消失了。看看下面的“bug”,看看最终回复bugs.openjdk.java.net/browse/JDK-8138754
  • @Zeta.Investigator 是的,但是如果您出于任何原因处理该页面,它也会停止。我的实例是我正在构建的游戏,我将 MediaView 放在根 Stackpane 中,这很好(因为我经常切换屏幕,并且实例变量可能由于某种原因丢失了)。
【解决方案2】:

为了避免突然停止,你必须:

a.setOnReady(new Runnable() {
        @Override
        public void run() {
            a.play();
        }
    });

它对我有用。

【讨论】:

    猜你喜欢
    • 2015-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    相关资源
    最近更新 更多