如何用 Corona SDK 制作包含音乐和声音开关的 2 个按钮?
2017-1-3 3:11:33
收藏:0
阅读:136
评论:1
我需要关于我的小部件开关按钮的帮助。我已经创建了 2 个开关按钮,用于音效和音乐开关,但问题是每次我关闭和打开音乐开关时,音乐(mp3 声音)都无响应,每次我开启或关闭音乐时它都在快速向前运行。下一个问题是每次我关闭声音开关时,它也会关闭音乐(mp3 声音)。 这是我的代码:
--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
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?


关于
audio.setVolume()的 Corana 文档:所以
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 endSettings.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 的信息。