我在libgdx中的音乐循环时遇到麻烦。我知道以前有一个Simmilair主题,但这完全没有帮助。关键是,当您进入游戏的主菜单(链接)时,雨声就回响了。不幸的是,每场比赛之间只有片刻的沉默,我不知道为什么- 您可以下载游戏,看看我的意思。我已经在使用.ogg格式,因此在这里找到的其他主题的解决方案并没有真正的帮助。
如果我在Audacity中循环播放此声音,则效果很好。
这是我的代码(不过,我认为这不会有所帮助):
rainSoundtrack = Gdx.audio.newMusic(Gdx.files.internal("soundtrack.ogg")); rainSoundtrack.setLooping(true);
问题是libGDX处理音乐的方式。我将在GitHub Issue 1654上引用badlogic文章。
Android的情况更加复杂和令人难过。在Android上,我们使用系统功能来播放音频,即MediaPlayer。这些Android软件在后台使用了设备依赖驱动程序(音频驱动程序,自定义编解码器实现等)。这意味着我们受到三星等硬件供应商及其驱动程序实施的支配。
该问题不仅限于libGDX,它是Android问题18756。
解
您的音轨在内存大小方面既短又小,因此在这种情况下使用libGDX声音实际上更好,并且没有此漏洞。
音乐->长而大的文件,未加载到内存中
声音->大小不一的文件,已加载到内存中
使用Sound类并循环播放。例:
long id; ... public void create() { music = Gdx.audio.newSound(Gdx.files.internal("soundtrack.ogg")); id = music.loop(); //Sound may not be ready here! } public void render() { if(id == -1) id = music.loop(); }