1

我在 Corona sdk 游戏中使用运行时侦听器,它可以工作,但是我真正感兴趣的是让我的游戏不会干扰用户通过使用他们设备上的硬件音量控制来设置他们的 droid 手机或平板电脑上的音量. 我在 Corona Labs 网站上找不到任何东西。感谢您的任何建议。

4

2 回答 2

3

这发生在我身上一次,是因为我使用了事件监听器“key”

要解决这个问题,您需要返回 FALSE,除了您正在处理的键,当“键”侦听器返回 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

它对我想要的效果很好,但阻止了音量键。请注意,上面没有“return”声明。

现在的代码是这样的:

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 (我的目的是防止应用程序在按下后退键时退出,可能这也是你想要的)并为其他所有内容返回 false (包括音量键在那!)

于 2012-08-30T16:26:36.050 回答
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

并且记住运行时监听器是全局的,你只需要注册一次监听器,当不再使用监听器时也要记得移除它。

希望这可以帮助。干杯!

于 2012-08-29T06:50:23.913 回答