サンプルではBGMが流れ続けますが、一旦サスペンドで音を止めると次にレジュームしても止まったままです。
再開できるように、サウンドのサスペンド・レジューム処理を追加します。
Sound.cpp
/**************
一時停止
**************/
void SoundPlayer::pause(void)
{
if ( state == PLAYING ) { // 再生中
if ( bqPlayerObject ) {
(*bqPlayerPlay)->SetPlayState(bqPlayerPlay, SL_PLAYSTATE_PAUSED); // 一時停止状態
}
state = PAUSED;
}
}
/**********
再開
**********/
void SoundPlayer::resume(void)
{
if ( state == PAUSED ) { // 一時停止中
play();
}
}
再生(SL_PLAYSTATE_PLAYING)や停止(SL_PLAYSTATE_STOPPED)と同様に、SetPlayStateで一時停止(SL_PLAYSTATE_PAUSED)の状態を設定します。
再開は準備からの再生と同じ処理になります。
サンプル
AppMain.cpp
/**************
一時停止
**************/
void pause_app(void)
{
for (int i = 0; i < 5; i++) {
sound_player[i].pause();
}
}
/**********
再開
**********/
void resume_app(void)
{
for (int i = 0; i < 5; i++) {
sound_player[i].resume();
}
}
サスペンド・レジューム時に、それぞれプレイヤーのサスペンド・レジュームを呼んでいる…だけです。
プロジェクト一式は、
こちらから。
セコメントをする