如何知道音乐文件是否已播放完毕?

时间:2015-08-01 10:14:25

标签: cocos2d-x cocos2d-x-3.0

在cocos2d-x中,您可以通过执行以下操作来播放音乐:

auto audio = SimpleAudioEngine::getInstance();

// set the background music and play it just once.
audio->playBackgroundMusic("mymusic.mp3", false);

但我们怎么知道音乐是否已经播放完毕?游戏可能被电话打断(触发暂停游戏和音乐的其他代码)或暂停用户。

无论如何都知道文件是否已播放完毕?我知道我们可以保留某种计时器来跟踪歌曲播放的持续时间,但这看起来很麻烦,这是一个常见的用例,特别是如果我们想要排队一个播放列表。

1 个答案:

答案 0 :(得分:1)

看起来您必须在audio->isBackgroundMusicPlaying()方法中测试update()

应该有一个代表或其他类型的回调,它会告诉你这些事情。我想你可以继承SimpleAudioEngine来添加它。

编辑 experimental::AudioEngine提供didFinishCallback

static void setFinishCallback(int audioID, const std::function<void(int, const std::string &)> &callback);

但是,您需要注意我认为它不支持所有平台,因此请谨慎使用。