如何知道音乐文件是否播放完毕?
How to know if a music file has finished playing?
在 cocos2d-x 中,您可以通过执行以下操作来播放音乐:
auto audio = SimpleAudioEngine::getInstance();
// set the background music and play it just once.
audio->playBackgroundMusic("mymusic.mp3", false);
但是我们怎么知道音乐是否播放完毕呢?游戏可能会被 phone 调用中断(触发暂停游戏和音乐的其他代码)或被用户暂停。
有没有办法知道文件是否播放完毕?我知道我们可以保留某种计时器来跟踪歌曲播放的持续时间,但这看起来很老套,这是一个常见的用例,尤其是当我们想要对播放列表进行排队时。
看来您必须在 update()
方法中测试 audio->isBackgroundMusicPlaying()
。
应该有一个委托,或者其他某种回调,它会告诉你这样的事情。我想你可以子类化 SimpleAudioEngine
来添加这个。
EDIT experimental::AudioEngine
提供 didFinishCallback
:
static void setFinishCallback(int audioID, const std::function<void(int, const std::string &)> &callback);
但是您需要注意,我认为它不支持所有平台,因此请谨慎使用。
在 cocos2d-x 中,您可以通过执行以下操作来播放音乐:
auto audio = SimpleAudioEngine::getInstance();
// set the background music and play it just once.
audio->playBackgroundMusic("mymusic.mp3", false);
但是我们怎么知道音乐是否播放完毕呢?游戏可能会被 phone 调用中断(触发暂停游戏和音乐的其他代码)或被用户暂停。
有没有办法知道文件是否播放完毕?我知道我们可以保留某种计时器来跟踪歌曲播放的持续时间,但这看起来很老套,这是一个常见的用例,尤其是当我们想要对播放列表进行排队时。
看来您必须在 update()
方法中测试 audio->isBackgroundMusicPlaying()
。
应该有一个委托,或者其他某种回调,它会告诉你这样的事情。我想你可以子类化 SimpleAudioEngine
来添加这个。
EDIT experimental::AudioEngine
提供 didFinishCallback
:
static void setFinishCallback(int audioID, const std::function<void(int, const std::string &)> &callback);
但是您需要注意,我认为它不支持所有平台,因此请谨慎使用。