我正在尝试创建一个基于音乐的游戏(类似于“我的歌唱怪物”)。想法是我有一个场景,我可以在场景中放置和删除几个不同的角色,每个角色都有一个独特的 mp3 文件唱歌。
我正在使用 cocos2dx 构建我的游戏,但对于声音,我使用的是当前在 android 上使用 MediaPlayer API 的自定义引擎。为了将所有声音同步在一起,我只是在加载场景时播放它们,然后根据场景中的角色静音和取消静音。问题是在旧设备上声音似乎不同步,我认为我需要一种方法来在加载 mp3 文件之前对其进行预缓存。
我尝试在高级创建所有 mediaPlayers 并使用 prepare() 方法,然后将它们保存在 hashmap 中,并在场景开始播放它们时使用 play() 。不幸的是,它没有用,而且曲目仍然不同步。我不确定 MediaPlayer 是如何工作的,所以我不知道尝试高级创建它是否等同于预缓存。标准的 cocos2dx 声音引擎使用 soundpool,我知道它不适合大文件,我不确定它是否有缓存机制。在 Ios 上,我已经有一个使用 openAL 的声音引擎,在我测试的 ipad 4 上它工作得很好。
你建议我做什么来同步曲目?实现另一个声音引擎?也许基于openSL?或者以某种方式保留一个计时器并使用它来同步曲目。
如何为这样的游戏设计声音,其中最重要的是让所有音轨同步在一起?