Lua在计时器上交替一个值

时间:2017-12-08 15:43:49

标签: lua

我现在非常喜欢。

我有一个开关,我需要能够每秒打开和关闭,但我真的不知道我会怎么做,因为它需要应用于相同的位/功能 如果当前有一个功能作为一个功能的开/关功能,问题是我需要一种方法让该功能每1秒开启和关闭一次。 到目前为止我已经尝试过这个但是它不适合我。 有人可以试着为我解决这个问题吗?

{$lua}
if not syntaxcheck then

  local On = 1
  local Off = 0
  local Switch = OnOffController

  local function OnOff()
    if Switch = Off then
      Switch = On
    if Switch = On then
      Switch = Off
    end
    end
  end

    OnOff()
    if(Second == nil) then
      Second = createTimer(getMainForm())
      Second.Interval = 1000
      Second.OnTimer = function(timer)
        OnOff()
      end
    end
  Second.setEnabled(true)
  end

1 个答案:

答案 0 :(得分:0)

虽然可能存在更多错误,但OnOff()函数肯定存在问题:

local function OnOff()
    if Switch = Off then
      Switch = On
    if Switch = On then
      Switch = Off
    end
    end
end

两个嵌套的if语句不会按照您的意愿执行。首先,您使用赋值运算符=而不是等于运算符==。即使逻辑有问题,即使这是正确的。如果Switch On进入第一个if,则流量将绕过两者。如果Switch Off进入第一个if,则首先将其更改为On,然后立即点击第二个条件并更改回{{1} }}

你可能想要更像的东西:

Off

您根本不需要第二次比较,假设local function OnOff() if Switch == Off then Switch = On else Switch = Off end end 只能是真或假。

我给出的其他一些建议是对Switch变量使用布尔类型,因为它明确表示它只能有两个值。您可能还想将其名称更改为类似Switch之类的内容,以明确其真实和错误在其上下文中的含义。同样,像SwitchedOn这样的名称可能会使目前称为ToggleSwitch的函数更加明显。