Corona SDK newSwitch - switch.isOn 与实际状态相反

Corona SDK newSwitch - switch.isOn is opposite to the actual state

我在页面添加了一个开关:

local function highlightSwitchPress( event )
    local switch = event.target
    print( "Switch with ID '"..switch.id.."' is on: "..tostring(switch.isOn) ) end

local highlightSwitch = widget.newSwitch(
    {
        x = ccx*1.75,
        y = ch*0.4,
        style = "onOff",
        id = "highlightSwitch",
        onPress = highlightSwitchPress,
        initialSwitchState = true
    }
)
highlightSwitch.xScale, highlightSwitch.yScale = 0.8, 0.8
highlightSwitch:setState( { isOn=true, isAnimated=true, onComplete=changeComplete } )
sceneGroup:insert(highlightSwitch)

但是我注意到当我点击开关(绿色背景)时打印出的字符串是:

Switch with ID 'highlightSwitch' is on: false

当我点击关闭(灰色背景)时,打印出的字符串是:

Switch with ID 'highlightSwitch' is on: true

为什么是相反的?

经过一番阅读后我发现这是因为 onPress 变量。 onPress 在开关改变之前触发。

通过使用onRelease,事件发生在开关变化后,会报告你想要的状态。

Is there a glitch with widget.newSwitch?

这是设计使然。您可能想知道按钮在切换前的状态,或者您可能想知道按钮切换后的状态。参见:

http://docs.coronalabs.com/api/library/widget/newSwitch.html

罗伯