SimpleAudioEngine::getInstance()->playBackgroundMusic("sound/Jazz.mp3", true); SimpleAudioEngine::getInstance()->stopBackgroundMusic("sound/Jazz.mp3");
bool Setting::init() { //播放代码 ① return true; } void Setting::onEnter() { Layer::onEnter(); log("Setting onEnter"); //播放代码 ② } void Setting::onEnterTransitionDidFinish() { Layer::onEnterTransitionDidFinish(); log("Setting onEnterTransitionDidFinish"); //播放代码 ③ } void Setting::onExit() { Layer::onExit(); log("Setting onExit"); } void Setting::onExitTransitionDidStart() { Layer::onExitTransitionDidStart(); log("Setting onExitTransitionDidStart"); } void Setting::cleanup() { Layer::cleanup(); log("Setting cleanup"); }
为了解释这个现象,我们可以参考一下6.3.2一节多场景切换生命周期。使用pushScene函数从实现HelloWorld场景进入Setting场景,生命周期函数调用顺序如下图所示。
综上所述,是否能够成功播放背景音乐,前面场景是否有调用背景音乐停止语句有关,也与当前场景中播放代码在哪个函数里有关。如果前面场景没有调用背景音乐停止语句,问题也就简单了,我们可以将播放代码放置在代码①、②、③任何一处。但是如果前面场景调用背景音乐停止语句,在onEnterTransitionDidFinish函数播放背景音乐会更好一些。
Cocos2d-x中播放背景音乐,布布扣,bubuko.com
原文:http://blog.csdn.net/tonny_guan/article/details/38367709