ブログBlog
一時停止と再開方法について
投稿日:2014年07月16日
布内です。
cocos2d-xを使って作成したアプリでホームボタンでアプリが裏に回ってもBGMがなり続けるという事態になりました。
解決方法はAppDelegate.cpp内にあるapplicationDidEnterBackgroudという関数内にBGMの停止処理を書き込めば止まります。
恐らく最初から
void AppDelegate::applicationDidEnterBackground() {
CCDirector::sharedDirector()->stopAnimation();
SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
}
とコーディングされていると思うので、コメントアウトを外してしまえば、アプリが裏に回るとBGMが停止します。
この、applicationDidEnterBackgroundという関数ですが、アプリが裏に回ったら呼び出される関数です。
効果音等も止めたり、アプリを終了させる場合は、ここに停止処理を書き込みます。
アプリが再開する時は同様にapplicationWillEnterForegroundという関数が呼び出されます。
こちらも恐らく最初から
void AppDelegate::applicationWillEnterForeground() {
CCDirector::sharedDirector()->startAnimation();
SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
}
とコーディングされていると思うので、コメントアウトを外せば、アプリが起動時にBGMが再生されます。
この写真だと2行ずつコメントアウトされてますが、
『if you use SimpleAudioEngine, it must be pause』はSimpleAudioEngineを使うなら停止に必要
『 if you use SimpleAudioEngine, it must resume here』は再開に必要
というコメントが書かれています。
後、余談でAndroidに限った話になりますが
setKeypadEnabled(true)
でキーパッドを有効にして
keyBackClicked関数を使えば戻るボタンが有効になるので、関数内に終了処理を書けば戻るボタンになります。