SimpleAudioEngine即可满足大部分需求,如果需要更进一步的功能,可以使用AudioEngine。

一、加载

  1. // 预加载
  2. static void preload(const std::string& filePath);
  3. static void preload(const std::string& filePath, std::function<void(bool isSuccess)> callback);

二、播放/停止

  1. // Play 2d sound
  2. // 返回audio ID,唯一识别audio instance,
  3. // AudioEngine::INVALID_AUDIO_ID: 表示无效的audio id
  4. static int play2d(const std::string& filePath, // 可以是相对路径
  5. bool loop = false, // 是否重复播放
  6. float volume = 1.0f, // 音量:0.0 ~ 1.0
  7. const AudioProfile *profile = nullptr); // nullptr表示default profile
  8. // audioID将失效,仍占据缓存
  9. static void stop(int audioID); // 停止audioID的audio instance音效
  10. static void stopAll(); // Stop all audio instances.
  11. // audioID将失效,缓存也将清除
  12. static void uncache(const std::string& filePath); // 清除音频缓存,会stop related audio first.
  13. static void uncacheAll(); // Uncache all audio data from internal buffer.

三、暂停/恢复

  1. static void pause(int audioID); // Pause an audio instance
  2. static void pauseAll(); // Pause all playing audio instances.
  3. static void resume(int audioID); // Resume an audio instance
  4. static void resumeAll(); // Resume all suspended audio instances.

四、设置状态

  1. // Sets volume for an audio instance
  2. // volume: 音量,0.0 ~ 1.0
  3. static void setVolume(int audioID, float volume);
  4. static float getVolume(int audioID);
  5. // Sets whether an audio instance loop or not.
  6. static void setLoop(int audioID, bool loop);
  7. static bool isLoop(int audioID);
  8. // 设置播放进度到第sec秒。
  9. static bool setCurrentTime(int audioID, float sec);
  10. static float getCurrentTime(int audioID);
  11. // 正在播放的将停止,后续的'preload', 'play2d' methods都将无效
  12. static void setEnabled(bool isEnabled);
  13. // 设置播放结束回调
  14. static void setFinishCallback(int audioID, const std::function<void(int,const std::string&)>& callback);
  15. // 设置可以同时存在的maxInstances个audio instance
  16. static bool setMaxAudioInstance(int maxInstances);
  17. static int getMaxAudioInstance();

五、获取状态

  1. static float getCurrentTime(int audioID); // 获取当前播放进度,第几秒
  2. static float getDuration(int audioID); // 获取音频总时长
  3. // 获取audio instance的状态。
  4. // ERROR
  5. // INITIALIZING,
  6. // PLAYING,
  7. // PAUSED
  8. static AudioState getState(int audioID);
  9. static int getMaxAudioInstance(); // 最大支持同时存在的audio instance数量
  10. static AudioProfile* getProfile(int audioID);
  11. static AudioProfile* getProfile(const std::string &profileName);
  12. static int getPlayingAudioCount(); // 正在播放的数量