对event.type Lua感到困惑

时间:2014-02-11 00:34:37

标签: lua corona

我正在从一本书中学习并学习方向。我对代码event.type。

非常困惑

以下是本书中的代码:

portrait = display.newText ("Portrait", display.contentWidth / 2,display.contentHeight /      2, nil,20)
portrait: setFillColor ( 1,1,1 )
portrait.alpha = 1

landscape = display.newText ("Landscape", display.contentWidth/ 2, display.contentHeight /2, nil, 20)
landscape: setFillColor (1,1,1)
landscape.alpha = 0

local function onOrientationChange (event)
if (event.type == 'landscapeRight' or event.type == 'landscapeLeft')    then
    local newAngle = landscape.rotation - event.delta
    transition.to (landscape, {time = 1500, rotation = newAngle})
    transition.to (portrait, {rotation = newAngle})
    portrait.alpha = 0
    landscape.alpha = 1
else
    local newAngle = portrait.rotation - event.delta
    transition.to (portrait, {time = 150, rotation = newAngle})
    transition.to (landscape, {rotation = newAngle})
    portrait.alpha = 1
    landscape.alpha = 0
end
end

似乎整个方向更改功能适用于event.type。我不明白它是什么,我不明白它是什么(==)。此外,当我更改字符串(在本例中为'landscapeRight'和'landscapeLeft')时,它也是相同的。它将采取任何价值,仍然可以正常运作。我对它的工作方式感到困惑,请解释event.type。

2 个答案:

答案 0 :(得分:2)

使用'landscapeRight'这样的字符串作为枚举文字是一种常见的Lua习语。

对于orientation个事件,event.type保留新的设备方向。

在您提供的代码段中,在定义onOrientationChange后,您似乎没有调用或以其他方式引用Runtime。您应该使用

将其附加到Runtime:addEventListener('orientation', onOrientationChange) 对象
{{1}}

答案 1 :(得分:1)

我希望你接受MBlanc的回答,我只是要扩展到这里:orientation event.type是一个值,它是几个字符串之一,如MBlanc帖子中的链接所示。 Event.type永远不会是那些字符串以外的任何东西。所以你通过将比较更改为永远不会匹配event.type的字符串来做的事情总是在“else”分支中结束,就好像你的设备从不面向横向:

local function onOrientationChange (event)
    if (event.type == 'blabla1' or event.type == 'blabla2')    then
        ...do stuff -- but will never get run because event.type can never have those values
    else -- so your program always ends up here: 
        ...do other stuff...
    end
end

这将使程序运行正常,除非当您的设备确实处于方向landscapeRight或左侧时,程序将执行“else”块而不是它应该执行的块(第一个块)。