SimpleAudioEngine即可满足大部分需求,如果需要更进一步的功能,可以使用AudioEngine。
一、加载
// 预加载
static void preload(const std::string& filePath);
static void preload(const std::string& filePath, std::function<void(bool isSuccess)> callback);
二、播放/停止
// Play 2d sound
// 返回audio ID,唯一识别audio instance,
// AudioEngine::INVALID_AUDIO_ID: 表示无效的audio id
static int play2d(const std::string& filePath, // 可以是相对路径
bool loop = false, // 是否重复播放
float volume = 1.0f, // 音量:0.0 ~ 1.0
const AudioProfile *profile = nullptr); // nullptr表示default profile
// audioID将失效,仍占据缓存
static void stop(int audioID); // 停止audioID的audio instance音效
static void stopAll(); // Stop all audio instances.
// audioID将失效,缓存也将清除
static void uncache(const std::string& filePath); // 清除音频缓存,会stop related audio first.
static void uncacheAll(); // Uncache all audio data from internal buffer.
三、暂停/恢复
static void pause(int audioID); // Pause an audio instance
static void pauseAll(); // Pause all playing audio instances.
static void resume(int audioID); // Resume an audio instance
static void resumeAll(); // Resume all suspended audio instances.
四、设置状态
// Sets volume for an audio instance
// volume: 音量,0.0 ~ 1.0
static void setVolume(int audioID, float volume);
static float getVolume(int audioID);
// Sets whether an audio instance loop or not.
static void setLoop(int audioID, bool loop);
static bool isLoop(int audioID);
// 设置播放进度到第sec秒。
static bool setCurrentTime(int audioID, float sec);
static float getCurrentTime(int audioID);
// 正在播放的将停止,后续的'preload', 'play2d' methods都将无效
static void setEnabled(bool isEnabled);
// 设置播放结束回调
static void setFinishCallback(int audioID, const std::function<void(int,const std::string&)>& callback);
// 设置可以同时存在的maxInstances个audio instance
static bool setMaxAudioInstance(int maxInstances);
static int getMaxAudioInstance();
五、获取状态
static float getCurrentTime(int audioID); // 获取当前播放进度,第几秒
static float getDuration(int audioID); // 获取音频总时长
// 获取audio instance的状态。
// ERROR
// INITIALIZING,
// PLAYING,
// PAUSED
static AudioState getState(int audioID);
static int getMaxAudioInstance(); // 最大支持同时存在的audio instance数量
static AudioProfile* getProfile(int audioID);
static AudioProfile* getProfile(const std::string &profileName);
static int getPlayingAudioCount(); // 正在播放的数量