ボタンを押してサウンドを再生したいのですが、そのためのコードがあります。
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();
しかし、これらすべてをボタンを押して実行すると、パフォーマンスが低下します。毎回のディスク アクセスが原因であることは理解しています。(まあ..とにかくファイルはRAMにあると言うことができるので、ボタンを押すたびにディスクアクセスはありません..バッファキャッシュとすべて..しかし、このコードはパフォーマンスをひどく傷つけます。)
だから私が単純にやったことは
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);
。では、どうすればいいのでしょうか?毎回現在のリソースを設定したくありません.テスターはクライアント側にあるため、パフォーマンステスト用にアプリケーションをテストすることもできません..