我想在按钮按下时播放声音,我有一个工作代码。
Phonon::MediaObject *bulletPlay = new Phonon::MediaObject(this);
bulletPlay -> setCurrentSource(Phonon::MediaSource("newBullet3.wav"));
playOutput = new Phonon::AudioOutput(Phonon::MusicCategory, this);
Phonon::createPath(bulletPlay, playOutput);
bulletPlay->play();
但是在按钮按下时做所有这些事情会导致性能受损。我知道每次访问磁盘都是原因。(好吧..您可以说该文件无论如何都在内存中,因此每次按下按钮时都没有磁盘访问权限..缓冲区缓存等等..但是此代码严重损害了性能。)
所以我只是做的是
static Phonon::MediaObject *bulletPlay;
static Phonon::AudioOutput *playOutput;
static Phonon::MediaSource *filePath;
在我的课上。在构造函数中
bulletPlay = new Phonon::MediaObject(this);
filePath = new Phonon::MediaSource("newBullet3.wav");
bulletPlay -> setCurrentSource(*filePath);
playOutput = new Phonon::AudioOutput(Phonon::MusicCategory, this);
Phonon::createPath(bulletPlay, playOutput);
并bulletPlay->play();
按下按钮。
但它只在第一次播放声音。所以看来我每次使用时都必须设置当前资源bulletPlay -> setCurrentSource(*filePath);
。那么我该怎么做呢?我不想每次都设置当前资源..我也无法测试应用程序进行性能测试,因为测试人员在客户端..