我正在使用SDL2绑定在Golang中制作游戏:https://github.com/veandco/go-sdl2
问题是,我添加了代码来播放音频,当我尝试播放时,音频声音混乱了。您可以说,由于声音的持续时间,它实际上在播放某些内容,并且它是在正确的事件触发的。但是声音本身就混乱了。
这是我的代码:
package SDL
import (
"io/ioutil"
"log"
"github.com/veandco/go-sdl2/mix"
)
var AUDIOS map[string]*mix.Chunk
func init() {
AUDIOS = make(map[string]*mix.Chunk)
AUDIOS["point_normal"] = LoadAudio("sound/effects/point_normal.wav")
}
func LoadAudio(path string) *mix.Chunk {
if err := mix.OpenAudio(44100, mix.DEFAULT_FORMAT, 2, 4096); err != nil {
log.Fatalf("%s\n", err.Error())
}
// Load entire WAV data from file
data, err := ioutil.ReadFile(path)
if err != nil {
log.Fatalf("%s\n", err.Error())
}
// Load WAV from data (memory)
chunk, err := mix.QuickLoadWAV(data)
if err != nil {
log.Fatalf("%s\n", err.Error())
}
defer chunk.Free()
return chunk
}
func CloseAudio() {
mix.CloseAudio()
}
这是我尝试播放的声音:
https://opengameart.org/sites/default/files/point_normal.wav
有人可以看到我的代码有什么问题吗?
答案 0 :(得分:1)
我不知道您正在使用的声音库,但这些行对我来说可疑:
defer chunk.Free()
return chunk
返回的“块”将调用Free()。那真的是您想要的吗?