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

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

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

为什么会相反呢?

点赞
用户5429320
用户5429320

经过一些阅读,我发现问题在于 onPress 变量。在开关更改之前,onPress 触发了。

通过使用 onRelease,事件在开关更改之后发生,将报告您想要的状态。

widget.newSwitch 是否存在故障?

2018-12-08 10:13:46
用户1870706
用户1870706

这是有意而为之的。在按钮切换之前或之后,您可能想要知道按钮的状态。请参阅:

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

Rob

2018-12-08 17:22:21