我試圖做一個health bar
,並且可能是什麼原,它會開始了綠色,健康失去之後你會發現它會變成黃色,然後是橙色,然後紅色..什麼相對於此。的Java:平滑的色彩過渡
我試圖使用在此鏈路提供的方法:https://stackoverflow.com/questions/19841477/java-smooth-color-transition
從該鏈接的結果是此代碼,就從值100的測試爲0,但它在IllegalArgumentException
在正常Red
和Green
結束,我的理由猜測是被高估255
Color to = Color.red;
Color base = Color.green;
int red = (int)Math.abs((100 * to.getRed()) + ((1 - 100) * base.getRed()));
int green = (int)Math.abs((100 * to.getGreen()) + ((1 - 100) * base.getGreen()));
int blue = (int)Math.abs((100 * to.getBlue()) + ((1 - 100) * base.getBlue()));
setForeground(new Color(red, green, blue));
它並沒有真正的工作的價值,我絕對不知道我怎樣才能得到它transition
我希望它的方式。
所以我HealthBar
類中,我有一個update()
方法
public void update() {
if (getValue() < 10) setForeground(Color.red);
else if (getValue() < 25) setForeground(Color.orange);
else if (getValue() < 60) setForeground(Color.yellow);
else setForeground(Color.green);
}
此代碼在某一點基本的轉變。
我需要創建領域在health bar
的某些values
使用某些colors
,所以現在我有這個..
if (getValue() < 10) {
Color to = Color.black;
// Color current = getForeground() ?
Color from = Color.red;
// ?
}
我只想用一個例子的最後一位。
所以我知道我將會有一個color
,我要和color
這是一個基礎。我不太確定是否需要color
。我現在看到的問題是轉換的步驟,因爲每個轉換都有不同的步驟。
摘要和問題
我不知道該如何實現什麼,我嘗試,我只知道可以肯定的是,我需要一個以和底座color
,我提供了一個鏈接,我看到了答案,但我無法弄清楚。隨着信息給出的,我怎麼能得到它的transition colors
?
這對我沒有意義:'(1 - 100)* base.getRed())'。乘以-99?真?你不應該硬編碼這些數字,但應該使用過渡變量。你應該用println來測試你的代碼來幫助調試它。 –
考慮創建併發佈一個我們可以不加改變地運行的[最小的,可編譯的,可運行的示例程序](http://stackoverflow.com/help/mcve),它會向我們展示您的問題。 –