C++ QT声子游戏音频
作为团队的一部分,我正在为学校做一个游戏项目。我需要设置一个singleton类,为游戏提供音频。我们使用QT是为了移动设备的便携性,也可能是安德里欧手机的便携性。我们决定用声子做游戏音频。我是个新手,刚开始第一次使用QT,对游戏编程也很陌生 音响系统应能同时处理多个声音。至少它必须处理背景音乐和声音效果。这些效果将通过信号连接到插槽 这是我的密码: /************音响系统.h***/C++ QT声子游戏音频,c++,qt,audio,phonon,C++,Qt,Audio,Phonon,作为团队的一部分,我正在为学校做一个游戏项目。我需要设置一个singleton类,为游戏提供音频。我们使用QT是为了移动设备的便携性,也可能是安德里欧手机的便携性。我们决定用声子做游戏音频。我是个新手,刚开始第一次使用QT,对游戏编程也很陌生 音响系统应能同时处理多个声音。至少它必须处理背景音乐和声音效果。这些效果将通过信号连接到插槽 这是我的密码: /************音响系统.h***/ class AudioSystem : public QWidget { Q_OBJEC
class AudioSystem : public QWidget
{
Q_OBJECT
public:
static AudioSystem *instance();
void setMusicFile(const QString &filename);
signals:
bool finishedMusic(); ///< For looping
public slots:
void playMusic(); ///< BG music triggered at Level start?
void stopMusic(); ///< Triggered by level finish
void click_sound(); ///< Menu button clicks
void step_sound(); ///< Other character sounds
void wall_sound(); ///< Hitting the wall or collision sound
void jump_sound(); ///< Jumping sound
void sound(int); ///< Level specific custom sounds
private:
// Singleton - constructors made private
AudioSystem(QWidget *parent = 0);
~AudioSystem();
AudioSystem(const AudioSystem &);
AudioSystem& operator=(const AudioSystem &);
static AudioSystem *m_Instance;
// media objects
Phonon::MediaObject *m_BgPlayer;
Phonon::MediaObject *m_EffectPlayer;
// audio sinks
Phonon::AudioOutput *m_BgAudioOutput;
Phonon::AudioOutput *m_EffectAudioOutput;
// audio paths
Phonon::Path m_BgAudioPath, m_EffAudioPath;
};
。。。。。。。。。。。。。。。。。。。。。。。。。。。等
typical implementation:
AudioSystem::instance()->playMusic
AudioSystem::instance(), SLOT(click_sound())
我所设置的代码在一个简单的主窗口的简单情况下似乎可以正常工作,但是当我把代码放在任何地方时,它什么也不做。有什么我不知道的吗
完整项目:
git://gitorious.org/gamecs340project/gamecs340project.git声子不能做到这一点。至少不是以理智的方式;如果您尝试播放多个声音,它会尝试多次打开系统的音频设备。这并不能保证在任何地方都有效 对于游戏,您通常需要自己的音频混音。最简单的方法之一是使用和。SDL_混音器可以同时播放多个音频样本,但不能播放多个音乐流。如果您需要,可以使用我的修改版
当然,还有很多其他的图书馆也支持这一点。但SDL_混音器可能是最容易使用的。我发现它确实有效。。。某种程度上。操作不一致,但一次将播放两个声音。我在QtSDK/Demos/4.7/mobile/quickhit目录中找到了一个很好的示例,说明了我想要做什么。他们使用GE(游戏启用程序),它也有我需要的声音缓冲。我要是早点找到这个就好了。游戏启用程序似乎使用QT多媒体库。
typical implementation:
AudioSystem::instance()->playMusic
AudioSystem::instance(), SLOT(click_sound())