我是js和jQuery的新手,想要实现一个简单的动画,这里曾多次讨论过:一个弹跳球。但是,我没有找到我的具体问题的答案,因为已经讨论的主题已经复杂得多。
我想要一个非常简单的动画:五次弹跳并保持在第六位。到目前为止我所取得的成就。但是对于五次弹跳我想要将弹跳距离减少20%的初始距离。假设距离为100,它应该首先反弹到80然后反弹到60 ...到20到0。
您可以看到我的尝试here。
或者只是这里的js代码:
$(function() {
var time = 500;
var bounces = 5;
function bounceDown(){
$(".ball").animate({top: 200}, time, function(){
bounceUp();
});
};
function bounceUp() {
$(".ball").animate({top: 100}, time);
};
function shadowUp(){
$(".shadow").animate({width: 100, height: 10, left: 85, top: 245, opacity: 1}, time,
function(){
shadowDown();
});
};
function shadowDown() {
$(".shadow").animate({width: 0, height: 0, left: 130, top: 225, opacity: 0}, time);
};
function finalDown(){
$(".ball").animate({top: 200}, time);
};
function finalShadow(){
$(".shadow").animate({width: 100, height: 10, left: 85, top: 245, opacity: 1}, time);
};
$(".button").on("click", function(){
for (var i = 0; i < bounces; i++){
setTimeout(function(){
bounceDown();
shadowUp();
}, time*2*i);
setTimeout(function(){
finalDown();
finalShadow();
}, 5000);
};
});
});
答案 0 :(得分:2)
您可以声明初始top_bounce
值:
var top_bounce = 100;
然后将bounceUp
功能更改为:
function bounceUp() {
$(".ball").animate({top: top_bounce}, time);
top_bounce = top_bounce + 20;
};
您可以在此处看到:http://jsfiddle.net/darkajax/5wASf/
关于你评论中提到的“奖金问题”,它是类似的,声明一个变量,如:var shadow_size = 0;
然后你的函数如下:
function shadowDown() {
console.log(shadow_size);
$(".shadow").animate({width: shadow_size*100, height: shadow_size*10, left: 110, top: 225, opacity: 0}, time);
shadow_size += 0.2;
};
您可以看到小提琴已更新,您只需要使用left
做类似的操作,使其看起来居中