gpt4 book ai didi

javascript - 弹跳球动画不起作用

转载 作者:行者123 更新时间:2023-11-30 16:25:04 27 4
gpt4 key购买 nike

我想创建一个简单的弹跳球。每当我按下向上箭头键时,球应该升高并落下。我实现了一个变量“重力”,它降低了球的速度。好吧,那行得通。但是在一次次点击向上箭头键之后,动画越来越快了。我不明白为什么,因为我刚刚开始编程,而且我没有真正的经验。

这是带有 HTML 和 CSS 的代码

<html>  
<head>
<style>
#objekt{
width:20px;
height:20px;
background-color: blue;
position:absolute;
border-radius: 100%;
}
#line{
width:100%;
height:1px;
background-color:black;
position:absolute;
top:220px;
}
</style>
<script type = "text/javascript" src = "jquery-2.1.4.min.js"></script>
<script>
$(document).ready(function(){
var objekt = $("#objekt");
var x = 30;
var y = 200;
var vely = -3;
var velx = 1;
var gravity = 0.05;
var bounce = -3;

$(document).on("keydown", function(e){
if(e.which == 38){
setInterval(function jumpObjekt(){
y += vely;
vely += gravity;
console.log(vely);
if(y > 200) vely = bounce;
if(bounce < 0){
bounce = bounce + 0.01;
} else {
bounce = 0;
}
}, 10);
vely = -3;
}
});

setInterval(function(){
objekt.css({
top: y,
left: x,
});
},10);
});
</script>
</head>

<body>
<div id = "objekt"></div>
<div id = "line"></div>
</body>

最佳答案

您需要将setInterval函数赋值给一个变量,这样您就可以在每次按向上箭头键后clearInterval

您还需要在 keydown 函数中初始化 bounce 变量。

更新的 JS

var bounceHandler;
$(document).on("keydown", function(e){
if(e.which == 38){
clearInterval(bounceHandler);
var bounce = -3;
bounceHandler = setInterval(function jumpObjekt(){
y += vely;
vely += gravity;
console.log(vely);
if(y > 200) vely = bounce;
if(bounce < 0){
bounce = bounce + 0.01;
} else {
bounce = 0;
}
}, 10);
vely = -3;
}
});

Working Demo using your code

关于javascript - 弹跳球动画不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34232245/

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