Cocos2d x 如何知道音乐文件是否已播放完毕?
在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); 但我们如何知道音乐是否已经播放完毕?游戏可能会被电话中断(触发暂停游戏和音乐的其他代码)或由用户暂停 有没有办法知道文件是否已经播放完
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);
但是,您需要注意,我认为它不支持所有平台,因此请谨慎使用