首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lua语法上的knife.timer --不像预期的那样

Lua语法上的knife.timer --不像预期的那样
EN

Stack Overflow用户
提问于 2020-08-25 03:03:27
回答 1查看 224关注 0票数 0

如果有人熟悉knife.timer on Lua,请您看看我的代码,告诉我有什么问题吗?

我希望做两件事:

  1. 有一个倒计时计时器,每秒钟计时一次,
  2. 有一个计时器,在6秒后开始在改变状态之前再闪烁我的角色3秒。

使用下面的代码,我的倒计时计时器从9开始,但很好地进入了负10。我的角色在4秒后开始眨眼,在改变状态后继续闪烁几秒钟。

我主要有Timer:update(dt),所以我不知道为什么时间不确定。我认为在字符闪烁16次之前,finish不会调用change状态函数。

代码语言:javascript
复制
function PlayerPilotState:update(dt)
    self.player.currentAnimation:update(dt)
    Timer.every(1, function()
        self.timer = self.timer - 1
    end)
    
    Timer.after(6, function()
        Timer.every(0.2, function() 
            self.player.blinking = not self.player.blinking
            self.player.otherPlayer.blinking = not self.player.otherPlayer.blinking
        end):finish(function()
            self.player:changeState('falling')
            self.player.otherPlayer:changeState('falling')
        end):limit(16)
    end)
end

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-08-25 14:01:08

使用基本倒计时计时器的

  1. ,您永远不会指定它何时停止。尝试使用self.timer = math.max(0,self.timer - 1)

:limit(9)

2.由于使用了Timer.after,您是否对它进行了适当的计时(很难感觉到已经过去了多少时间)。:finish()函数发生在:after()内部和:every()之后,这可能导致事情变得很奇怪。我建议在:limit之前添加:finish()

代码语言:javascript
复制
Timer.after(6, function()
        Timer.every(0.2, function() 
            self.player.blinking = not self.player.blinking
            self.player.otherPlayer.blinking = not self.player.otherPlayer.blinking
        end):limit(16):finish(function()
            self.player:changeState('falling')
            self.player.otherPlayer:changeState('falling')
        end)
    end)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63571456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档