温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

CocoStudio开发之背景音乐播放两秒就没声音问题

发布时间:2020-07-01 23:37:04 来源:网络 阅读:424 作者:googlingman 栏目:开发技术

问题

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

答案

    后来跟踪发现原因在于(至少我的情况如此),我在场景的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等环境下没有实际测试过。


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI