【发布时间】:2013-07-26 13:50:33
【问题描述】:
我可以看到有很多人问这样的问题。但没有明确的答案。我还没有找到任何简单可行的解决方案,这可能是因为我问的问题比我想的要困难得多。
我在制作动画时使用 jQuery UI 弹跳缓动效果让一个对象落入屏幕,然后我希望它只弹跳两次,就好像它是一个重物而不是非常有弹性一样。有谁知道如何做到这一点?这是 UI 中原生的 Bounce 函数,关于要更改和协调哪些变量的任何想法?我试图自己弄清楚,但我在这种类型的函数和数学逻辑方面的能力不足。
原生弹跳功能:
Bounce: function ( p ) {
var pow2,
bounce = 4;
while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}
return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );
},
我发现了其他反弹功能,例如:
for(var a = 0, b = 1, result; 1; a += b, b /= 2) {
if (p >= (7 - 4 * a) / 11) {
return (-Math.pow((11 - 6 * a - 11 * p) / 4, 2) + Math.pow(b, 2) );
}
}
在这两个函数中,我知道最基本形式的“p”是距离目标距离的百分比。
有人有什么想法吗?
我也发现了这个:
https://github.com/clark-pan/Bounce-Function
如果你想添加一大堆额外的代码,这真的很棒,而且我什至想出了如何从中获得我想要的反弹,但我宁愿制作一个自定义缓动,让我能够完成我的目标。比用一大堆无关代码重写上面的bounce-function。
感谢任何有解决方案的人。
【问题讨论】:
标签: jquery function user-interface easing bounce