在touchgfx中设计者为我们设计了缓动方程帮助我们适配不同场景下的移动。
描述缓动方程的网站https://easings.net/
鼠标放上去即可右边就会出来一个示例 即右边那个黑点点,它的移动代表了不同的缓动方程的移动形式。
自定义缓动方程
/**
* Cubic easing in: t^3. Accelerating from zero velocity.
*
* @param t Time. The current time or step.
* @param b Beginning. The beginning value.
* @param c Change. The change between the beginning value and the destination value.
* @param d Duration. The total time or total number of steps.
*
* @return The current value as a function of the current time or step.
*/
static int16_t cubicEaseIn(uint16_t t, int16_t b, int16_t c, uint16_t d);
int16_t EasingEquations::cubicEaseIn(uint16_t t, int16_t b, int16_t c, uint16_t d)
{
int16_t result = b + c;
if ((t < d) && (d != 0))
{
float tmp = static_cast<float>(t) / d;
result = roundRespectSign(c * tmp * tmp * tmp + b);
}
return result;
}
virtual void handleTickEvent()
{
....
counter++;
// Calculate value in [0;targetValue]
calculatedValue = MyEasingEquations::myCustomEeasingEq(counter, 0, targetValue, animationSteps);
....