成都网站建设设计

将想法与焦点和您一起共享

CocoStudio开发之背景音乐播放两秒就没声音问题-创新互联

问题

   最近在使用COCOSTUDIO 1.3开发时,遇到如题所示的疑惑--在游戏中想念场景切换时出现背景声音播放两声就没有了(不是不播放,只是播放一少部分!)。

创新互联建站2013年开创至今,先为仙居等服务建站,仙居等地企业,进行企业商务咨询服务。为仙居企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

答案

   后来跟踪发现原因在于(至少我的情况如此),我在场景的onExit方法中每次都调用了SceneReader::purge()。而这个方法实现代码是:

void SceneReader::purge()
{        
    cocos2d::extension::DictionaryHelper::shareHelper()->purgeDictionaryHelper();
    TriggerMng::getInstance()->destroyInstance();
    _pfnSelector = NULL;
    _pListener = NULL;
    CocosDenshion::SimpleAudioEngine::sharedEngine()->end();
    CC_SAFE_DELETE(_sharedReader);
}

大伙看清上面的第7行了吧,就是它。每次在调用purge方法时停止了系统声音的播放。
找到了原因,就不再调用了吗?情况不一定。现在,我的几个场景使用了UI编辑器设计的,即我没有使用场景编辑器设计,所以我在这几个场景间切换时(场景的onExit方法中)不需要调用SceneReader::purge()(只需要使用GUIReader::purge())。于是,我去掉这一调用就OK了。

但,另外一种可能的现实是,如果是多个使用场景编辑器设计的场景间切换时该怎么操作呢?我的办法是:去掉转场切换动画,继续使用SceneReader::purge()。因为去掉转场切换调用,则想念两个场景的方法调用是:firstScene::onExit()----->secondScene::onEnter()。

补充

我的背景声音没有加入到场景编辑器中,而是使用cocos2d-x方法直接编码方式调用的。
另外,本文只是大致给出了CocoStudio开发过程中背景音乐播放两秒就没声音的问题。但是,我只是在win32下这样操作的,在Android,iOS等环境下没有实际测试过。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章标题:CocoStudio开发之背景音乐播放两秒就没声音问题-创新互联
分享网址:http://chengdu.cdxwcx.cn/article/hgedh.html