2013-02-25 49 views
0

我目前正在研究我的菜單結構和選項菜單。我使用Director API在場景之間切換並使用自定義保存/加載系統。管理聲音通道

我試圖讓用戶可以打開和關閉音樂。我有它的工作,但不是在最優化的方式(因爲它停止所有的聲音)。

Main.lua

bgMusic = audio.loadSound("sounds/Torukia.mp3") 
musicIsPlaying = false 

mainMenu.lua

if musicIsPlaying == false then 
     if gameSettings.soundOn == true then 
      backgroundMusicChannel = audio.play(bgMusic, { loops=-1 }) 
      musicIsPlaying = true 
     elseif gameSettings.soundOff == true then 
      musicIsPlaying = false 
     end 
    end 
end 

optionsMenu.lua

local function toggleSound(event) 
    if event.phase == "ended" then 
     if gameSettings.soundOn == true then 
      gameSettings.soundOn = false 
      gameSettings.soundOff = true 
      audio.stop() 
    soundBtn:setFillColor(255,0,0) 
     elseif gameSettings.soundOff == true then 
      gameSettings.soundOn = true 
      gameSettings.soundOff = false 
      backgroundMusicChannel = audio.play(bgMusic, { loops=-1 }) 
    soundBtn:setFillColor(0,255,0) 
     end 
     saveSettings(gameSettings, "gameSettings.json") 
    end 
end 

我可以創建全球聲道?這將有所幫助。我試着翻閱文檔並尋找答案,但我無法找到有關此問題的很多信息。

回答

1

試試這個版本中,你可以指定你想要播放的頻道或停止

Main.lua

bgMusicChannel = 1 -- can be 1-32 
bgMusic = audio.loadSound("sounds/Torukia.mp3") 
musicIsPlaying = false 

mainMenu.lua

if musicIsPlaying == false then 
     if gameSettings.soundOn == true then 
      backgroundMusicChannel = audio.play(bgMusic, { loops=-1,channel = bgMusicChannel }) 
      musicIsPlaying = true 
     elseif gameSettings.soundOff == true then 
      musicIsPlaying = false 
     end 
    end 
end 

optionsMenu.lua

local function toggleSound(event) 
    if event.phase == "ended" then 
     if gameSettings.soundOn == true then 
      gameSettings.soundOn = false 
      gameSettings.soundOff = true 
      audio.stop(bgMusicChannel) 
    soundBtn:setFillColor(255,0,0) 
     elseif gameSettings.soundOff == true then 
      gameSettings.soundOn = true 
      gameSettings.soundOff = false 
      backgroundMusicChannel = audio.play(bgMusic, { loops=-1, channel = bgMusicChannel }) 
    soundBtn:setFillColor(0,255,0) 
     end 
     saveSettings(gameSettings, "gameSettings.json") 
    end 
end 
+0

奇妙的工作,並req幾乎沒有改變我的代碼。它幫助我更好地理解聲音通道。雙贏的雙贏! – Cleverbird 2013-03-28 13:36:00