让数字过渡更平滑

我有一个变量,当函数被调用时,会乘以1.01。我想要的是,不仅仅看到该变量“跳”到另一个值,还能够平滑逐渐增加,直到达到该值。

举个例子:

x = 1000
函数被调用
x = x * 1.01
-->
现在x值为1010,但我想在屏幕上显示时,它可以在一定的时间内显示为100010011002,...,1010,而不仅仅是从10001010

我目前的代码:

function Multiply()
                local random = math.random(1, 102)
                    if random ~= 1 then
                        Multiplier = Multiplier * 1.01
                        MultiplierDisplay.text = "x" .. string.format("%.3f", Multiplier)

                        Gain = Multiplier * PlaceYourBetTextField.text - PlaceYourBetTextField.text
                        GainDisplay.text = "Gain: " .. string.format("%.0f", Gain)
                    else
                        timer.cancel(MultiplyTimer)
                        Multiplier = 1
                    end
                end
                MultiplyTimer = timer.performWithDelay(125, Multiply, 0)
点赞
用户3159048
用户3159048

你需要选择过渡所需的时间。

我假设你正在计算,因此你想要恒定的几何变化而不是恒定的算术变化。

你可以这样做:

local x=1000

local x0=0
local x1=0
local time0=0
local time1=0

local function changex(newx,time)
    x0=x
    x1=newx
    time0=os.clock()
    time1=time0+time
end

然后你的主循环:

while true do
    local t=os.clock()
    if t<time0 then
        x=x0
    elseif t<time1 then
        local tratio=(t-time0)/(time1-time0)
        x=x0*(x1/x0)^tratio
    else
        x=x1
    end
    pause()
end
2016-03-05 23:19:47