Я пытаюсь сделать health bar
, и, как может быть оригинал, он начнет зеленый, и после потери здоровья вы обнаружите, что он станет желтым, затем оранжевым, затем красным .. или что-то относительно этого.Java: Smooth Color Transition
Я попытался с помощью метода, представленного в этой ссылке: 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);
}
Этот код делает основной переход в определенных точках.
Мне нужно создать поля, чтобы использовать определенную colors
values
при определенной части health bar
, так что теперь у меня есть это ..
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), которую мы можем запустить без изменений, что показывает вашу проблему для нас. –