我创建了一个代码,当一个加速度(像引力一样工作)时抛出一个元素,并在changed_lenght达到零时下降;防止第二次启动的功能,如果第一次没有完成
“mouseenter”正在触发此功能。当鼠标离开并快速进入时,该功能会一遍又一遍地重新开始,而不会停止前面的那个,所以看起来很糟糕。
我不知道是否有任何方法来检查是否在开始函数之前先前已经结束。或者其他可以帮助我的解决方案?
这里是我的JS代码:
$('#outher').mouseenter(function moveone(){
var t = 0;
var v = 20;
var p = 275;
var a = 5;
var moveoneint = setInterval(jump, 50);
function jump(){
t++;
x = (v*t) - (0.5 * a * t * t);
p = (p - x);
if(x <= 0){
clearInterval(moveoneint);
t = 0;
var movetwo = setInterval(fall, 50);
function fall(){
t++;
x = (0.5 * a * t * t);
p = (p + x);
document.getElementById('inner').style.top = p + 'px';
if(p >= 275){
clearInterval(movetwo);
}
}
}
else{
document.getElementById('inner').style.top = p + 'px';
}
}
});
,这里是一个小提琴:
http://jsfiddle.net/ctarimli/TJte8/
你应该考虑使用jQuery'动画()'方法,加上'停止()'方法和缓解作用(本身不支持,但是很多插件hanlde它) –
如何用“动画”方法实现这种重力效应?因为我知道动画使用相同的速度,但我希望它变得越来越慢,并得到更快的下降 – ctarimli
寻找缓解效应,这基本上是你在寻找 –