我想在buttonpress上播放聲音,我有一個工作代碼。按下Qt播放音頻;高效
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();
on buttonpress。
但它只是第一次播放聲音。因此,似乎我必須每次使用bulletPlay -> setCurrentSource(*filePath);
來設置當前資源。那麼我該如何去做呢?我不想每次都設置當前資源..我無法測試應用性能測試也因爲測試是在客戶端..
您是否在調用play()之前嘗試[seek](http://qt-project.org/doc/qt-4.8/phonon-videoplayer.html#seek)? – 2013-04-04 15:25:28