【问题标题】:How to play music in loop in libgdx?如何在 libgdx 中循环播放音乐?
【发布时间】:2018-12-31 07:10:53
【问题描述】:

我在 on create 中创作了这样的音乐:

music_background = Gdx.audio.newMusic(Gdx.files.internal("background_music.mp3"));
music_background.setLooping(true);

没有循环播放的问题。

我也尝试不使用循环,而是注册setOnCompletionListener,但它也无法播放。当我尝试像这样重新加载文件时:
music_background = Gdx.audio.newMusic(Gdx.files.internal("background_music.mp3")); 在活动中它起作用了,但只有一次。

我认为问题在于当它播放完文件时会自行处理......

如何循环播放音乐?我做错了什么?

【问题讨论】:

  • 方法名是setLooping而不是SetLoop。您也可以在音乐结束后尝试方法isLooping()getPosition()进行调试。
  • 是的,我自己在这里写的,并没有从我的代码中复制它。我尝试了 isLooping() 和 getPosition()。第一个方法是真的,第二个是0..我能用它做什么?
  • 我在我的应用程序中尝试了Music 资产加载的方法。它可以正常工作并且循环正常。我还尝试使用OnCompletionListener 获取isLooping()getPosition() 值以与您的值进行比较,但是当音乐再次开始时没有调用方法。可能只有在音乐停止时才会调用它,这在我的情况下从未发生过。还有一些想法: 1. 你能试试其他的 mp3 吗?可能是您当前的已损坏? 2.您的music_background字段是否声明为static
  • 还有一个问题。您在哪些后端运行您的应用程序进行测试?
  • 我尝试了另一个 mp3 文件,但效果不佳(循环不起作用)。您对 OnCompletionListener 是正确的,它仅在循环设置为 false 时才有效。 music_background 不是静态的。我在安卓上运行它。你能把你测试的文件给我吗?

标签: loops libgdx playback


【解决方案1】:

你做得对,但 MP3 不适合循环播放,请改用 OGG。 MP3 会在开头添加一个短暂的静音,OGG 或 WAV 没有这个限制。

这是我完美运行的代码:

menuMusic = Gdx.audio.newMusic(Gdx.files.internal("data/sounds/music_menu.ogg");
menuMusic.setLooping(true);
menuMusic.play();

如果您的所有文件都在 MP3 中,只需下载 Audacity,导入您的 MP3,编辑掉空白音频并导出为 OGG。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-27
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多