我在这里完全失败..我一直在使用iOS7的模拟器中运行我的OCUnit测试,没有任何问题。几天前,每当我运行我的应用程序或运行测试时,我都会从CocosDenshion.m中的行获得EXC_BAD_ACCESS:
ALuint testSourceId = _sources[0].sourceId;
疯狂的是,我很久以前试过检查以前的提交,我在模拟器中跑得很好,现在他们也在这条线上崩溃了。我只能在iOS设备上构建我的应用程序或运行测试。我没有升级任何东西,我尝试清理甚至删除〜/ Library / Developer / Xcode中的派生数据文件夹......
我无法理解为什么这会突然成为一个问题。
我看到其他人遇到同样的问题:http://forum.cocos2d-swift.org/t/exc-bad-access-cdsoundengine-ios7-simulator/11713/2
然而,他们声称这与ios7模拟器有关,正如我所说,直到现在我一整年都没有遇到任何问题。
更新:
问题显然来自_initOpenAL方法..当它发生时:
context = alcCreateContext(newDevice, 0);
返回nil ....为什么哦为什么突然之间没有任何理由为零?
答案 0 :(得分:1)
我也遇到了同样的问题。发现因为安装了Splashtop Streamer的软件。 Splashtop Streamer构建了开源软件soundflower。
在系统偏好设置中,声音输出为Soundflower。您需要更改内置扬声器(内置)。
答案 1 :(得分:0)
在Cocos2d-x 3.6中播放声音时,我突然遇到同样的问题。从2011年以来没有变化的代码。 这是一个可怕的可怕的kludge,但至少它有点让你继续前进:
东西:
#include "TargetConditionals.h"
#if TARGET_IPHONE_SIMULATOR
return;
#endif
因此它是testGetGain(CocosDenshion.m)函数的顶部看起来像:
- (void) _testGetGain {
float testValue = 0.7f;
#include "TargetConditionals.h"
#if TARGET_IPHONE_SIMULATOR
return;
#endif
这基本上会关闭模拟器上的声音,但至少你可以继续测试你的其他代码。
我对这款kludge不满意,但至少当你升级到更新的cocos2d-x应该解决这个问题时,kludge将被抹去。我怀疑这在iOS模拟器中完全是一个问题。