正如标题所述,声音将以可笑的静音音量播放。直到我听到最大声音几乎听不到声音时,我才认为它根本没有播放。
好几个星期都没问题。不是问题。突然间,它开始无处可去。我已经尝试过清理/重建,重新启动Xcode,重启设备等等。没有什么能解决它。它会在随机构建中突然再次出现。这真的让我感到沮丧,我对OpenAL感到很失望,因为这不是我在使用它几周后遇到的第一个问题。我不能释放任何有时可能有效的声音。
我正在同时使用AVAudioPlayer播放背景音乐,并没有遇到任何问题。
任何人都知道造成这种情况的原因是什么?
回应user1260708:
我的init方法看起来像这样
bool D2DSoundController::init(Map<D2DSound> *sounds) {
if (!_initialzed) {
OSStatus result = AudioSessionInitialize(NULL, NULL, &_interruptionListener, (void*)_context);
ulong cat = kAudioSessionCategory_MediaPlayback;
result |= AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(cat), &cat);
_sounds = sounds;
_device = alcOpenDevice(0);
if (_device != 0) {
_context = alcCreateContext(_device, 0);
if (_context != 0) {
alcMakeContextCurrent(_context);
alGenSources(_numSources, _sources);
//alDistanceModel(AL_LINEAR_DISTANCE_CLAMPED);
//alListener3f(AL_POSITION, 300.0f, 200.0f, 0.0f); --- I think this was the problem?
_initialzed = true;
return (alGetError() == 0 && result == 0);
}
return false;
}
return false;
}
return false;
}
但是,我想我发现了这个问题。在注释掉alListener3f调用之后(只是注意到它已经被注释了一段时间),它似乎再次起作用。我不明白为什么这突然成为一个问题,因为它一直存在;距离考试也不适合我(因为呼叫首先在那里进行测试),所以我总决定不使用它,但我想我忘了删除那条线。 请参阅此问题:Distance Attenuation with OpenAL on iPhone/iPod
关于注意问题的任何输入(这似乎也是这个问题的根源)会很棒!
正如我所注意的那样,由于我放弃了演绎,我也一直在使用立体声,这不应该影响它,所以我仍然感到困惑。