我在Corona sdk游戏中使用运行时监听器,它可以工作,但我真正感兴趣的是让我的游戏不会干扰用户通过使用硬件音量控制在他们的机器人手机或平板电脑上设置音量在他们的设备上。我在Corona Labs网站上找不到任何东西。谢谢你的任何建议。
答案 0 :(得分:3)
这件事发生在我身上,这是因为我使用了事件监听器“key”
要解决这个问题,你需要返回FALSE,除了你正在处理的键,当一个“key”监听器返回true时,它意味着:“我用那个键做了一些事情,所以操作系统应该忽略它”,当它返回false,表示:“我没有使用该键,因此操作系统应该处理它”
那么,为什么你不能设置音量?这是因为你正在某处捕获“key”事件,并且当按下的键是第一个时不返回false(最简单的方法是返回“true”表示你想要的东西,而“false”表示其他所有东西)。
当我遇到这个问题时,我有这个代码:
local downPress = false
function onBackButtonPressed(e)
if (e.phase == "down" and e.keyName == "back") then
downPress = true
else
if (e.phase == "up" and e.keyName == "back" and downPress) then
storyboard.gotoScene( LastScene , "fade", 200 );
Runtime:removeEventListener( "key", onBackButtonPressed );
end
end
end
它可以正常工作,但阻止了音量键。 请注意,它上面没有“返回”声明。
现在的代码是:
local downPress = false
function onBackButtonPressed(e)
if (e.phase == "down" and e.keyName == "back") then
downPress = true
return true
else
if (e.phase == "up" and e.keyName == "back" and downPress) then
storyboard.gotoScene( LastScene , "fade", 200 );
Runtime:removeEventListener( "key", onBackButtonPressed );
return true
end
end
return false; --THE LINE YOU REALLY NEED IS THIS ONE!!!
end
所以我所做的只有当按下后退键时才返回true(我的意图是当按下后退键时阻止应用程序退出,这可能是你想要的)并且返回其他所有内容的假(包含的音量键!)
答案 1 :(得分:0)
如果您有这样的运行时监听器(用于返回android中的后退硬按钮):
Runtime:addEventListener( "key", handleBackButton )
请记住在侦听器的末尾添加“return true”。
local function handleBackButton( event)
if (event.phase == "down") and (event.keyName =="back") then
-- your code for going back
return true
end
end
请记住,运行时侦听器是全局的,您只需要注册一次侦听器,并且还记得在不再使用时删除侦听器。
希望这会有所帮助。 干杯!