2013-02-23 1 views
2

В настоящее время я создаю последовательность логотипов в C++ с помощью SFML и хотел бы ввести желаемое время и затем исчезать на такое количество времени, например, например , если вход 3, затем погасте цвет до 3 секунд. Максимальное количество целого цвета, так как цвет равен 255, как белый. Это мой текущий код:Попытка выяснить уравнение для затухания цвета в течение определенного времени

sf::Time fadeCalc = clock.getElapsedTime(); 
int f = fadeCalc.asMilliseconds(); 
int l = logoLength.asSeconds(); 
int iColor = "Equation needed using variables" 
sf::Color fadeColor(iColor,iColor,iColor); 
Fade.setFillColor(fadeColor); 

Любая помощь будет очень признательна! Мне жаль, что я не мог понять, как это объяснить.

ответ

2

Вы будете исчезать от start color до end color над total fade time, делая шаг elapsed time за ничью.

В результате на каждом шаге ничья вы хотите установить свой цвет в start color + ((end color - start color) * (elapsed time/total time)). Это даст вам сумму изменений, которые вы хотите выполнить, выяснить процент изменений, которые должны были произойти к этому моменту, а затем добавить эту измененную сумму в свою начальную сумму.

Например, если вы хотите перейти от 100 до 255, и это было 1000 из 3000 миллисекунд, вы ожидаете, что это будет 1/3 пути от 100 до 255 или 151.6667 (151 усечен). На 2/3 это будет 203.333. И т. Д.

Как только вы = = total time, просто установите start color в end color.

+0

Большое спасибо! Это был прекрасный ответ, я просто не мог обвести вокруг себя голову. – John