Corona SDK (LUA) 计时器和倒计时。

我有一个游戏,一个函数每次定时器触发时会生成随机对象。它看起来像这样:

function showCountDown(event)
    - 显示和隐藏倒计时的条件。
    if countDownNumber == 0 then
        spawnShit = 0
        timer.cancel(timerSpawn)
        timer.cancel(countdownTimer)
        print('NO MORE SPAAAAAAAAAAAAAAAWWNS')
    end

    if countDownNumber> = -1 then
        countDownNumber = countDownNumber -1
        countDownText.text = countDownNumber
        spawnShit = 1
    end

    if score == nil then
        score = 0
    end

    返回真
end

问题是定时器在-2而不是0时坚持停止,这非常令人沮丧。有人能看出我做错了什么吗?也许您有更好的方法来创建一个倒计时计时器,以触发不同的事件(停止生成对象,启动win / lose / pause屏幕等)。

此外,从测试过程中观察控制台,似乎函数“showCountDown”在spawnShit = 0,timer.cancel(myTimers)被触发后额外触发了大约3次,这很奇怪,因为我取消了触发事件的计时器。

点赞
用户869951
用户869951

你有

如果countDownNumber>= -1 then
    countDownNumber = countDownNumber -1

这意味着当countDownNumber大于或等于-1时,即任何正数,0和-1时,将输入if块。在块内,它会减少1,因此最后一个值将为-2。

你可能想要>= 1,这将使它的最后一个值为0:

如果countDownNumber>= 1 then
        countDownNumber = countDownNumber -1
2014-04-01 17:20:07