gpt4 book ai didi

javascript - 缩短 jQuery Animate 函数并恢复为按键时启动

转载 作者:行者123 更新时间:2023-12-03 08:16:09 24 4
gpt4 key购买 nike

我有一个简单的落球动画,我正在使用 jQuery 动画函数。球从 bottom: 600 开始下降,直到到达地面 bottom: 90

function ballbounce() {
$('.football').animate({
'bottom': 90
}, bouncetime, 'easeOutBounce', function() {

});
}

当按下空格键时,我想缩短下落动画并使球再次上升。我通过检测按键、获取球的当前 bottom 值、向该值添加 300px,然后将其设置为球上的新 bottom 值来尝试此操作。但我希望下落动画从该点开始恢复。

$(document).keydown(function(e) {
switch(e.which) {
case 32: // spacebar
var ballOffset = $('.football').offset();
var currentBallPosition = $(window).height() - ballOffset.top - $('.football').height();
var newBallPosition = currentBallPosition + 300;
$('.football').css("bottom", newBallPosition);
break;

default: return; // exit this handler for other keys
}
e.preventDefault(); // prevent the default action
});

我无法让它工作,我不知道我哪里出了问题。仅当我在动画完成后按空格键时,球的 bottom 才会更新。

这是一款基本的足球比赛。所以球落下,你按空格键将球再次踢回空中。这是一个好的解决方案吗?

最佳答案

我会打电话.stop()到元素上,然后将其重置到原始位置。您可以在动画之前将原始位置存储为元素本身的数据属性,然后使用它来重置它,如下所示:

function ballbounce(selector,bouncetime) {
var $ball= $(selector);
$ball.data('original-top',$ball.position().top )
$ball.animate({ top: '+550px'}, bouncetime, "easeOutBounce", function() {
//animation complete
});
return $ball;
}
var $ballReference=ballbounce('.football',5000);

$(document).keydown(function(e) {
switch(e.which) {
case 32: // spacebar
$ballReference.stop().css({top:$ballReference.data('original-top')});
break;
default: return; // exit this handler for other keys
}
e.preventDefault(); // prevent the default action
});
.football{
width:100px;
height:100px;
background-color:#ccc;
position:absolute;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.11.3/jquery-ui.min.js"></script>
<div class="football"></div>

关于javascript - 缩短 jQuery Animate 函数并恢复为按键时启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33927561/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com