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

グローバルサウンドチャンネルを作成できますか? それは役に立ちます。ドキュメントを調べて回答を探してみましたが、この問題に関してはあまり見つかりませんでした。

4

1 に答える 1

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
于 2013-03-01T02:47:50.867 に答える