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

Cocos2d x 如何知道音乐文件是否已播放完毕?,cocos2d-x,cocos2d-x-3.0,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); 但我们如何知道音乐是否已经播放完毕?游戏可能会被电话中断(触发暂停游戏和音乐的其他代码)或由用户暂停 有没有办法知道文件是否已经播放完

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

auto audio = SimpleAudioEngine::getInstance();

// set the background music and play it just once.
audio->playBackgroundMusic("mymusic.mp3", false);
但我们如何知道音乐是否已经播放完毕?游戏可能会被电话中断(触发暂停游戏和音乐的其他代码)或由用户暂停


有没有办法知道文件是否已经播放完毕?我知道我们可以使用某种计时器来跟踪歌曲播放的持续时间,但这似乎有点老套,这是一个常见的用例,尤其是当我们想对播放列表进行排队时。

看起来您必须在
更新()
方法中测试
音频->IsBackgroundMusicLaying()

应该有一个委托,或者其他类型的回调,它会告诉你这些事情。我想您可以通过子类
SimpleAudioEngine
来添加这个

EDIT有一个
experimental::AudioEngine
,它提供了一个
didFinishCallback

static void setFinishCallback(int audioID, const std::function<void(int, const std::string &)> &callback);
static void setFinishCallback(int audioID,const std::function&callback);
但是,您需要注意,我认为它不支持所有平台,因此请谨慎使用