反应原生动画,Easing.bounce力反弹只有两次

时间:2018-02-14 13:50:42

标签: react-native

Easing.bounce有可能只反弹2次吗? 而不是3次;

Animated.timing(
    this.y_translate,
    {
        delay: 0,
        toValue: 1,
        easing: Easing.bounce,
        duration: 1000,
    }
 ).start();
 });

1 个答案:

答案 0 :(得分:0)

简短的回答是否定的。

很长的答案是查看文档。

您会看到Easing.bounce基于this mathematical definition,其反弹发生了4次。您可以在example code中详细了解他们如何执行此操作(请注意easeInBounceeaseOutBounceeaseInOutBounce函数。如果将其与Easing.bounce的React Native源中的内容进行比较,您将找到相同的数学计算。

因此,如果你想要有两个反弹效果,你需要自己做数学运算。例如,您可以使用自己的Easing方法创建自己的bounce类。然后在动画中使用它代替Easing.bounce

// You can also extend Easing and just define a new method (or override)
// if you want access to Easing's other methods.
class MyEasing {
  /**
   * Provides a two bounce effect.
   */
  static bounce(t: number): number {
    /* Code Goes Here */
    return something;
  }
}

// ... in your code ...
Animated.timing(
    this.y_translate,
    {
        delay: 0,
        toValue: 1,
        easing: MyEasing.bounce,
        duration: 1000,
    }
 ).start();
 });

如何进行此计算虽然超出了问题的范围,所以我会留下让你弄清楚。