我一直在使用多个音轨,其体积根据鼠标的移动实时调整游戏。 我使用SDL-调音台的音频和无功香蕉的游戏一般。 问题是,轨道,目前都已在年初开始,停止输入循环开始时播放。 原因可能是别的东西,但我不知道是否有SDL和无功,香蕉,我不明白之间的一些奇怪的相互作用。 我一直在试图解这了一会儿,但它可能只是简单的东西,我已经忽视。 提前致谢。 下面是一个简单的测试代码:
import Reactive.Banana
import Graphics.UI.SDL
import Graphics.UI.SDL.Mixer
import Control.Monad
musicdir = "/home/silas/code/haskell/river/audio/"
testNet :: AddHandler (Int,Int,[MouseButton]) -> NetworkDescription t ()
testNet mouseHdlr = do
eMouse <- fromAddHandler mouseHdlr
reactimate $ (putStrLn . show) <$> eMouse
main = withInit [InitEverything] $ do
setVideoMode 100 100 32 [SWSurface]
openAudio defaultFrequency AudioS16Sys 1 1024
allocateChannels 1
chunk <- loadWAV $ musicdir ++ "guitar1" ++ ".ogg"
playChannel 0 chunk (-1)
(mouseHdlr, mouseAction) <- newAddHandler
net <- compile $ testNet mouseHdlr
actuate net
forever $ getMouseState >>= mouseAction
编辑:看来问题不躺在反应香蕉必然。 任何形式的“永远”循环会导致音频停止。