在cocos2d-x中,您可以通过执行以下操作来播放音乐:
auto audio = SimpleAudioEngine::getInstance();
// set the background music and play it just once.
audio->playBackgroundMusic("mymusic.mp3", false);
但我们怎么知道音乐是否已经播放完毕?游戏可能被电话打断(触发暂停游戏和音乐的其他代码)或暂停用户。
无论如何都知道文件是否已播放完毕?我知道我们可以保留某种计时器来跟踪歌曲播放的持续时间,但这看起来很麻烦,这是一个常见的用例,特别是如果我们想要排队一个播放列表。
答案 0 :(得分:1)
看起来您必须在audio->isBackgroundMusicPlaying()
方法中测试update()
。
应该有一个代表或其他类型的回调,它会告诉你这些事情。我想你可以继承SimpleAudioEngine
来添加它。
编辑 experimental::AudioEngine
提供didFinishCallback
:
static void setFinishCallback(int audioID, const std::function<void(int, const std::string &)> &callback);
但是,您需要注意我认为它不支持所有平台,因此请谨慎使用。