4

我正在使用 32 个通道初始化 FMOD,并使用以下代码播放短样本(1 秒):

result = system->init(32, FMOD_INIT_NORMAL , NULL);
// here I load the sounds //
result = system->playSound(FMOD_CHANNEL_FREE, grid[_sound], false, &channel);

它按预期工作,声音重叠,但现在我意识到,当我播放 32 个样本(不是同时)时,一次只能播放一个声音。看起来 FMOD_CHANNEL_FREE 的行为就像一个增量计数器,当它达到 32 时,它会停留在那里,在它仍在播放时停止最后一个声音以播放新的声音。

当声音停止播放时,我是否必须删除它们?如何?我觉得我缺少一些基本的东西

谢谢!

马克

4

3 回答 3

4

我有同样的问题。原来我忘了调用system->update()每一帧。一旦我把它放进去,它工作得很好。

于 2011-11-12T08:00:52.907 回答
0

听起来频道仍在播放(但无声),您可以检查 Channel::isPlaying 看看它们是否还在播放吗?

如果这没有帮助,也许可以发布更多代码。

于 2011-06-03T07:08:02.113 回答
0

你能验证你初始化 fmod 系统有超过一个最大通道吗?尝试使用以下代码来初始化您的 fmod 系统:

    System->init(32, FMOD_INIT_NORMAL, 0);

或者你忘了打电话

    System->Update();
于 2013-12-02T18:10:02.717 回答