文章目录
用于
此类允许您以通常较低的延迟方式播放未压缩的音频文件(通常是WAV文件),并且适用于响应用户操作的“反馈”类型的声音(例如虚拟键盘声音、弹出对话框的正面或负面反馈或游戏声音)。如果低延迟不重要,请考虑使用QMediaPlayer类,因为它支持更广泛的媒体格式,资源密集度更低。
代码demo
一个显示了如何播放循环的、稍微安静的声音效果:
即为常见使用方式
QSoundEffect effect;
effect.setSource(QUrl::fromLocalFile("engine.wav"));
effect.setLoopCount(QSoundEffect::Infinite);
effect.setVolume(0.25f);
effect.play();
/*effect.stop()停止播放*/
通常,声音效果应该被重用,这允许提前完成所有的解析和准备,并且只在必要时触发。这有助于降低音频播放的延迟。
MyGame()
: m_explosion(this)
{
m_explosion.setSource(QUrl::fromLocalFile("explosion.wav"));
m_explosion.setVolume(0.25f);
// Set up click handling etc.
connect(clickSource, &QPushButton::clicked, &m_explosion, &QSoundEffect::play);
}
private:
QSoundEffect m_explosion;
枚举值
QSoundEffect::Infinite
用作setLoopCount()的参数,用于无限循环
QSoundEffect::Status 状态
QSoundEffect::Null 0 未设置源或源为空。
QSoundEffect::Loading 1 正在尝试加载中
QSoundEffect::Ready 2 源文件已经被加载准备播放
QSoundEffect::Error 3 操作过程中出错,例如加载源失败。