2016-08-14 73 views
0

我正在尝试编程自己的进度条,并且这已经有了工作。每次百分比值更改时,条也会发生变化,以便条显示正确的进度。进度条 - 百分比之间的平滑过渡

现在我的问题是,酒吧总是(当然)跳转到下一个状态,它之间没有平滑的过渡。现在我的问题是,我怎样才能在各个阶段之间平稳过渡?

信息: 我知道游戏的fpscount和酒吧的位置+规模。我正在用java编程(我认为这个信息是不必要的:P)

+2

你试过了什么?显示一些代码。不是直接设置宽度,而是可以增加每个帧的宽度,直到达到所需的宽度/百分比。 – Cristy

回答

1

一般答案,而不是语言特定的。

不是直接设置宽度,而是可以增加每个帧的宽度,直到达到所需的宽度/百分比。

我们假设您有功能bar.setWidth(val)来设置进度条的宽度。

让这成为您的更新循环(在60FPS RAN):

update { 
    ... 
    ... 

    double percentageLoaded; // this is your parameter probably 

    static const int incrementStep = 1; // increase this for faster animation 

    // Get the width of the bar for the current percentage 
    int desiredWidth = percentageLoaded * bar.totalWidth; 


    if(bar.currentWidth < desiredWidth) { 
     bar.currentWidth += incrementStep; 
    } 
} 

还有你必须检查你的incrementStep大于1(如几件事情:没有设置吧宽度大于100%)

下面是一个小图,也许它可以帮助你更好地理解。在此示例中,递增步骤为1px,条宽为4px,装载设置为50%完成,这意味着您的条宽度应为2pxenter image description here

+0

不明白它,并成功实施它,谢谢! :) – Niklas

+0

我还有一个问题... 如果我有一个很小的值(让我们说0.001)的增量步骤是肯定的,转换是完全平滑的有一个问题,如果加载是例如准备在2秒内,因为酒吧需要至少20秒左右... 有没有解决这个问题的方法?也许这一步与距离呈指数增长?你能帮我吗... 谢谢! :) – Niklas

+0

是的,您可以根据当前小节宽度和所需小节宽度之间的距离计算incrementStep。例如:如果你想动画需要一秒钟,动画的差异是40px,你的fps是60fps,那么增量步骤是40px /(60fps * 1秒) – Cristy