【问题标题】:How to return value without terminating the function?如何在不终止函数的情况下返回值?
【发布时间】:2017-03-11 13:30:46
【问题描述】:

这里它返回 0.2,因为它在不等待计时器迭代的情况下停止函数。

function Ani.Speed(maxSpeed, phase)
    if(phase == accelerate) then   
        function speedUp()
            if(maxSpeed ~= 0) then
                maxSpeed = 0
            end
            returnedSpeed = maxSpeed + 0.2
            return(returnedSpeed)
        end
        timer.performWithDelay(1000, speedUp, 10)
    end

end

如何在每次迭代时返回 maxSpeed?

预期结果:

print(maxSpeed) -- 0/0.2/0.4/0.6/(...)/2, where "/" is interval in second

【问题讨论】:

  • 使用协程,也许吧。

标签: lua coronasdk


【解决方案1】:

在 timer.performWithDelay 之前声明一个局部数组变量,并将所有 maxSpeed 添加到 speedUp 函数内的数组中。在 timer.performWithDelay 之后,返回数组。

根据要求,请在下面找到建议的代码:

if(phase == accelerate) then
    returnedSpeed = []
    i = 0 #(array index)
    function speedUp()
        if(maxSpeed ~= 0) then
            maxSpeed = 0
        end
        returnedSpeed[i] = maxSpeed + 0.2
        i = i + 1
    end
    timer.performWithDelay(1000, speedUp, 10)
    return(returnedSpeed) 
end     

【讨论】:

  • 起初2:unexpected symbol near '['
  • 您已共享错误。我给出的代码是一个算法/概念。你必须调整你的编程语言。
  • 好吧,那好吧。但是,我找到了一种在我的代码中使用计时器绕过所有功能的方法,但无论如何感谢。您将能够帮助其他人。
猜你喜欢
  • 1970-01-01
  • 2012-03-31
  • 1970-01-01
  • 1970-01-01
  • 2017-01-18
  • 1970-01-01
  • 2016-09-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多