Я довольно новичок в js и jQuery и хотел достичь простой анимации, которая обсуждалась здесь много раз: прыгающий мяч. Однако я не нашел ответа на свой конкретный вопрос, поскольку обсуждаемые темы уже были намного более сложными.Отскок мяча 5 раз Уровень jquery/javascript для начинающих
Я хочу довольно простую анимацию: пять отскоков и пребывание на земле с шестой. Этого я достиг до сих пор. Но для пяти отскоков я хочу уменьшить расстояние отскока на 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);
};
});
});
Thats great! Но я не понимаю. Вы просто установите новую переменную со 100! Ю использовал это, чтобы указать, насколько далеко должен отскок мяч (= 100). Почему добавление + 20 сначала начинается с 180, 160 ... до 120? Я бы предположил, что должен идти только до 120. Спасибо вам в любом случае. Возможно, в качестве бонусного вопроса. Как я мог одинаково обрабатывать тень, чтобы она не исчезла полностью, поскольку высота отскока мяча уменьшается, а скорее как ширина/высота: 0/0 первый отскок, 20/2 секундный отскок, .... 80/8 четвертый отскок и т. Д. до 100/10 с последней. Спасибо – user2132380
Хорошо, что, читая ваш вопрос, я предположил, что вы хотите, чтобы мяч отскакивал меньше каждый раз, поэтому в данном случае это вопрос перспективы, учитывая, что начальный «верх» равен 100, в следующий раз ему будет 120, поэтому это означает, что когда ваш мяч поднимается вверх, он будет дальше от верхней части экрана, и так далее на последней итерации 'top' должно быть ** 180 **, показывая мяч дальше всего от верхней части экрана и давая иллюзию подпрыгивания чуть-чуть ... – DarkAjax
@ user2132380 Я только что обновил ответ, кстати, не забудьте принять мой ответ, если сочтет это полезным ... – DarkAjax