2017-01-02 8 views
0

私のウィジェットスイッチボタンに関する助けが必要です。私は、サウンドスイッチと音楽スイッチ用の2つのスイッチボタンを作成しましたが、問題は、スイッチを切って音楽スイッチをオンにするたびに、音楽(mp3サウンド)が反応していないということです。 /オフ。次の問題は毎回私が音楽スイッチをオフにするスイッチです(mp3サウンド)。 HERESに私のコード:サウンドと音楽のコロナSDK用の2つのスイッチボタン?

--utils.lua

local sounds = {} 
sounds["select"] = audio.loadSound("sounds/select.mp3") 
sounds["score"] = audio.loadSound("sounds/score.mp3") 
sounds["incorrect"] = audio.loadSound("sounds/gameover.mp3") 
sounds["clap"] = audio.loadSound("sounds/clapping.mp3") 
sounds["music"] = audio.loadSound("sounds/gameMusic.mp3") 

M.playSound = function(name) 
    if sounds[name] ~= nil then 
     audio.play(sounds[name]) 
    end 
end 

--Settings.lua

soundSwitchPressed = function(event) 
local switch = event.target 
utils.playSound("select") 


if switch.id == "sound" then 
    if switch.isOn == true then 
     audio.setVolume(0) 
    else 
     audio.setVolume(1) 
    end 
end 
end 

musicSwitchPressed = function(event) 
    local switch = event.target 
    utils.playSound("music") 

    if switch.id == "music" then 
     if switch.isOn == true then 
      audio.setVolume(0) 
     else 
      audio.setVolume(1) 
     end 

    end 
end 



local sound_switch = widget.newSwitch 
    { 
     left = _W-70, 
     top = navBar.y + navBar.height/2 + 44, 
     style = "onOff", 
     id = "sound", 
     x = 800, 
     y = 960, 
     onPress = soundSwitchPressed 
    } 
    sound_switch.xScale, sound_switch.yScale = 3, 3 
    uiGroup:insert(sound_switch) 

    local music_switch = widget.newSwitch 
    { 
     left = _W-70, 
     top = navBar.y + navBar.height/2 + 44, 
     style = "onOff", 
     id = "music", 
     x = 800, 
     y = 1200, 
     onPress = musicSwitchPressed 
    } 

    if audio.getVolume() == 0 then 
     sound_switch:setState({isOn=false, isAnimated=false}) 
     music_switch:setState({isOn=false, isAnimated=false}) 
    else 
     sound_switch:setState({isOn=true, isAnimated=false}) 
     music_switch:setState({isOn=true, isAnimated=false}) 
    end 
end 

enter image description here

答えて

1

私はあなたの方法が良いかわかりません。私はbeginerが、私はあなたを助けたい:)

コロナのドキュメントからおよそaudio.setVolume()

Sets the volume either for a specific channel, or sets the master volume.

のでaudio.setVolume()は、すべての音や音楽に影響を与えます。

多分、変数を使って再生音かどうかを判断してください。

utils.lua

audio.reserveChannels(6) 
... 
sounds["select"] = audio.loadSound("sounds/select.mp3") 
sounds["score"] = audio.loadSound("sounds/score.mp3") 
sounds["incorrect"] = audio.loadSound("sounds/gameover.mp3") 
sounds["clap"] = audio.loadSound("sounds/clapping.mp3") 
sounds["music"] = audio.loadSound("sounds/gameMusic.mp3") 

local channels = {} 
sounds["select"] = 1 
sounds["score"] = 2 
sounds["incorrect"] = 3 
sounds["clap"] = 4 
sounds["music"] = 5 

music = audio.loadStream("backgroundMusic.mp3") 

M.soundOn = true 
M.musicOn = true 

M.playMusic = function() 
    if music ~= nil then 
     audio.play(music, { channel = 6 }) 
    end 
end 

M.playSound = function(name) 
     if sounds[name] ~= nil then 
      audio.play(sounds[name], { channel = channels[name]}) 
     end 
    end 

Settings.luaサウンドプット・コードをプレイするたび

... 
soundSwitchPressed = function(event) 
local switch = event.target 

if utils.soundOn then 
    utils.playSound("select") 
end 

if switch.id == "sound" then 
    if switch.isOn == true then 
     utils.soundOn = true 
    else 
     utils.soundOn = false 
     audio.stop(1) 
     audio.stop(2) 
     audio.stop(3) 
     audio.stop(4) 
     audio.stop(5) 
    end 
end 
end 
... 

musicSwitchPressed = function(event) 
    local switch = event.target 

    if utils.musicOn then 
     utils.playSound("music") 
    end 

    if switch.id == "music" then 
     if switch.isOn == true then 
      utils.musicOn = true 
      utils.playMusic() 
     else 
      utils.musicOn = false 
      audio.stop(6) 
     end 

    end 
end 

if utils.soundOn then 
    utils.playSound("your_sound_effect_name") 
end 

または

if utils.musicOn then 
    utils.playMusic() 
end 

audioについてさらに読む。

+0

Idurniat氏はチャンネルを宣言する別の方法はありますか?例。この種の宣言でエラーが発生しましたERROR:フィールド 'select'(ユーザーデータ値)のインデックスを作成しようとしました.. btwこの音を試しました["clap" ] = audio.loadSound( "sounds/clapping.mp3"、{channel = 1})にはまだ同じエラーがあります...病気についてもっと読む... –

+0

私は自分の答えを改善しました。今はうまくいくはずです。これは間違った構文です 'sounds [" clap "] = audio.loadSound(" sounds/clapping.mp3 "、{channel = 1})'例えばオーディオのように再生、停止などをするには 'channel'パラメータを使用する必要があります.stop(1) 'または' audio.setVolume(0、{channel = 1}) 'となります。 – ldurniat

+0

あなたは本当に素晴らしいアイドルですが、どのように私のスイッチボタンのアニメーションを保存することができますか?戻るボタンをクリックした後、私のスイッチはそれ自体を保存しません。私のif-elseステートメントaudio.getVolumeは、コードを編集した後、私のアニメーションの切り替えボタンを保存していません。しかし、audio.stop()== nilの場合は試してみました。まだ動作しません。 –