Мне нужна помощь относительно кнопки переключения виджета. Я создал кнопку 2 переключателей, которая предназначена для переключения звука и музыкального переключателя, но проблема заключается в том, что каждый раз, когда я выключаюсь и включаю музыкальный переключатель, музыка (mp3-звук) не реагирует, означает, что ее скорость быстро развивается каждый раз, когда я переключаю музыку на/выкл. Следующая проблема: каждый раз, когда я выключаю звуковой переключатель, он также отключает музыку (mp3-звук). Heres мой код:2 кнопка переключения звука и музыки Corona SDK?
--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
Господин Idurniat есть еще один способ объявить канал? ех. звучит ["select"]. channel = 1 <- im, имеющий ошибку с таким объявлением, сказал: ERROR: попытка индексировать поле «select» (значение пользовательских данных). btw Я пробовал это звуки ["clap" ] = audio.loadSound ("sounds/clapping.mp3", {channel = 1}) по-прежнему имеет ту же ошибку ... плохо читайте больше об аудио ... –
Я улучшил свой ответ. Теперь он должен работать. Это неправильный синтаксис 'sounds [" clap "] = audio.loadSound (" sounds/clapping.mp3 ", {channel = 1})' Вам нужно использовать параметр 'channel', когда вы играете, останавливаетесь и т. Д., Например,' audio .stop (1) 'или' audio.setVolume (0, {channel = 1}) '. – ldurniat
Вы действительно отличная помощь idurniat, но как я могу сохранить анимированную кнопку моего переключателя? После щелчка мышью мой переключатель не спасет себя. Инструкция if-else audio.getVolume не сохраняет мою кнопку анимированного переключателя после редактирования кодов. Но я попытался, если audio.stop() == nil. все еще не работает. –