2016-08-14 91 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