【发布时间】:2011-01-04 18:55:48
【问题描述】:
我正在尝试使用 SDL 1.2 完成一个学校项目,但我遇到了一个无法解决的问题。
游戏有几个游戏状态模块,每个模块都有一个功能 int Run(SDL_Surface *screen);
在每个模块中,Run() 初始化音频,运行它的循环,然后在返回之前关闭音频。
所有模块都使用 Mix_OpenAudio() 和 Mix_CloseAudio() 来初始化/取消初始化声音,并且协同工作。
唯一的例外是我使用 SDL_FFMpeg 显示电影的电影电影模块。这个模块迫使我改用 SDL_OpenAudio()。
SDL_OpenAudio 第一次失败并出现错误“音频设备已打开”,但第二次可以正常工作。
一旦我运行了电影模块,其他模块中的所有声音都会停止工作,即使它们的所有函数都返回 0 表示成功。
有人知道发生了什么吗?
【问题讨论】:
-
显示相关模块的一些代码?
-
呃...无论如何还是谢谢..但最终解决问题的方法让我彻底愤怒。我终于受够了,只是在每个模块的末尾又卡住了 5 个 SDL_CloseAudio() 调用......你不知道,问题就消失了!所以我一一删除了额外的电话,直到......我的号码和我开始时一样,除了它仍然有效......
-
上面的评论听起来你的编译器没有注意到有变化。这可能会发生。如果您对为什么不工作感到困惑,您应该做的一件事是强制编译器重新编译整个项目。手动删除所有 .obj 文件或在 IDE 中使用一些“清除项目”命令。再次运行,看看它现在是否有效。如果它仍然不起作用,请询问 SO。 ;-)