【问题标题】:How to know if a music file has finished playing?如何知道音乐文件是否已播放完毕?
【发布时间】:2015-08-01 10:14:24
【问题描述】:

在 cocos2d-x 中,您可以通过以下方式播放音乐:

auto audio = SimpleAudioEngine::getInstance();

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

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

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

【问题讨论】:

    标签: cocos2d-x cocos2d-x-3.0


    【解决方案1】:

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

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

    编辑experimental::AudioEngine提供didFinishCallback

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多