В настоящее время я создаю последовательность логотипа в 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);
Любая помощь будет принята с благодарностью! Извините, я не мог найти способ объяснить это проще.
Вы будете исчезать из 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
,
Других решений пока нет …