在使用libgdx API创建我的第一个游戏时,我试图加载3个文件进行音乐播放 .
intro_music.mp3,start_music.mp3,loop_music.mp3 .
我的目标:
我想在显示startmenu的同时加载介绍音乐来反复播放 . 当用户点击PLAY按钮时,start_music.mp3将在intro_music.mp3淡出时播放 .
然后,一旦完成,大约30秒后,loop_music.mp3将播放,但它必须在start_music.mp3结束之前大约半秒,以确保正确的转换 . 然后游戏继续循环loop_music.mp3文件 .
我目前的解决方案
使intro_music.mp3成为音乐实例,而start_music.mp3和loop_music.mp3是声音实例 . 它们会在游戏跟踪的某些运行时运行 .
挫折:
这一切都运行良好,直到游戏加载到Android上,其中已经在两个设备上测试,音乐的声音文件在调用.play()方法后大约5秒停止(与桌面版本工作正常不同) . 在Android上,libgdx不会像我想的那样使用声音文件 .
所以问题是,libgdx有没有办法在我的游戏背景中播放多个音乐文件?
如果所有其他方法都失败了,我将只编辑声音片段以便一个接一个地组合在一起,然后在两个音乐文件的转换之间有短暂的空白声音滞后 .
如果你想调查我的代码在这里:http://pastebin.com/ee3GGaNa
1 回答
您应该在内存中仅加载短音频文件(音效)并通过流媒体播放长音频文件(音乐) . 没有必要在内存中保存很少的mp3文件并且一直浪费内存 . 您应该开始播放第一首音乐,然后检查它是否仍在循环播放或设置onCompletionListener以在音乐停止时调用,这样您就可以开始播放下一首音乐了 .
http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/audio/Music.html#isPlaying--
http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/audio/Music.OnCompletionListener.html