管理声道

我正在工作中的菜单结构和选项菜单。我正在使用Director API在场景之间切换并使用自定义保存/加载系统。

我尝试使用户能够开关音乐。我已经做到了,但不是以最优化方式(因为它会停止所有声音)。

Main.lua

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

 

mainMenu.lua

 

 

如果musicIsPlaying == false then          如果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(事件)      如果事件相位==“结束” then          如果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)          结束          saveSettings(gameSettings,“gameSettings.json”)      end end

 

我能创建全局音频通道吗?那会很有帮助。我尝试查看文档并搜索答案,但我找不到与此问题有关的信息。

点赞
用户1376272
用户1376272

尝试这个版本,你可以指定想要播放或停止哪个声道

Main.lua

bgMusicChannel = 1 -- 可以是 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

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
2013-03-01 02:47:50