Остановка и продление анимации
Подскажите пожалуйста как можно манипулировать анимацией. Например:
slider_line_1.animate({
marginLeft: margin_line_1
},500, 'linear', function(){
// something
});
вот такая анимация которую нужно останавливать, STOP работает отменно, но вот как возобновить анимацию с места остановки. То есть slider_line_1 сместился влево на 399 и остановился, а когда я перезапускаю функцию анимации, то он начинает продвигать с места остановки на 500, а не с 399 до 500, а потом снова на 500. (Это очевидно, но все же.) Первая мысль самому расчитывать остаток пути и время и вспомогательной функцией дотягивать, а потом запускать первую, но уверен что это уже где то и кем то решено. Спасибо за помощь. |
Цитата:
<!DOCTYPE html>
<html>
<head>
<style>div {
position: absolute;
background-color: #abc;
left: 0px;
top:30px;
width: 60px;
height: 60px;
margin: 5px;
}
</style>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>
<body>
<button id="go">Go</button>
<button id="stop">STOP!</button>
<button id="back">Back</button>
<div class="block"></div>
<script>
$("#go").click(function(){
$(".block").animate({left: '500px'}, 2000);
});
$("#stop").click(function(){
$(".block").stop().html($(".block").offset().left);
});
$("#back").click(function(){
$(".block").animate({left: '0px'}, 2000);
});
</script>
</body>
</html>
|
Разные скорости которые заметны особенно после 400 пикселя. То есть я запускаю анимацию -> она доходит до 400 пикселя и идет -> я останавливаю -> я запускаю и дотягивается она уже не с первоначальной скоростью что хотелось бы избежать.
То есть грубо говоря так: пройти надо 1000 px за 10 сек. анимация остановлена на 500px когда она продолжается то остаток в 500px должен быть пройден за то же время что и первый отрезок К сожалению когда остановка идет на 343.4578 считать сложнее да и хотелось бы избежать этого. |
Цитата:
см параметр : linear Если не устроит, то делать линейную анимацию через setInterval |
Duda.Ml1986@gmail.com,
Вариант с одинаковой скоростью ...
<!DOCTYPE html>
<html>
<head>
<style>
div {
position: absolute;
background-color: #abc;
left: 0px;
top:30px;
width: 60px;
height: 60px;
margin: 5px;
}
</style>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>
<body>
<button id="go">Go</button>
<button id="stop">STOP!</button>
<div class="block"></div>
<script>
var time, duration = 10000;
$("#go").click(function () {
time = new Date();
$(".block").animate({
left: '500px'
}, duration, function () {
duration = 10000;
});
});
$("#stop").click(function () {
time = (new Date()).getTime() - time.getTime();
duration -= time
$(".block").stop().html(duration);
});
</script>
</body>
</html>
|
Цитата:
выходом было бы добавить плагин для анимации (или вообще другой фреймворк скачать для неё), или же сделать костыльным способом через setInterval |
| Часовой пояс GMT +3, время: 09:56. |