我目前正在使用 SFML 在 c++ 中创建一个 Logo 序列,并且想要输入所需的时间,然后淡出该时间量,例如,如果输入为 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,而 3000 毫秒已达到 1000,那么您预计会是从 100 到 255 的 1/3,即 151.6667(151 被截断)。如果是 2/3,则为 203.333。等等。
一旦您 >= 您的 total time
,只需设置 start color
至end color
.
关于c++ - 尝试找出在特定时间内褪色的方程式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15036801/