Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.06.2013, 18:30
Аватар для Duda.Ml1986@gmail.com
Профессор
Отправить личное сообщение для Duda.Ml1986@gmail.com Посмотреть профиль Найти все сообщения от Duda.Ml1986@gmail.com
 
Регистрация: 01.09.2011
Сообщений: 263

Остановка и продление анимации
Подскажите пожалуйста как можно манипулировать анимацией. Например:

slider_line_1.animate({
   		 marginLeft: margin_line_1
		  },500, 'linear', function(){
			// something
			});


вот такая анимация которую нужно останавливать, STOP работает отменно, но вот как возобновить анимацию с места остановки. То есть slider_line_1 сместился влево на 399 и остановился, а когда я перезапускаю функцию анимации, то он начинает продвигать с места остановки на 500, а не с 399 до 500, а потом снова на 500. (Это очевидно, но все же.)

Первая мысль самому расчитывать остаток пути и время и вспомогательной функцией дотягивать, а потом запускать первую, но уверен что это уже где то и кем то решено. Спасибо за помощь.
Ответить с цитированием
  #2 (permalink)  
Старый 13.06.2013, 18:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от 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>

<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>
Ответить с цитированием
  #3 (permalink)  
Старый 13.06.2013, 19:08
Аватар для Duda.Ml1986@gmail.com
Профессор
Отправить личное сообщение для Duda.Ml1986@gmail.com Посмотреть профиль Найти все сообщения от Duda.Ml1986@gmail.com
 
Регистрация: 01.09.2011
Сообщений: 263

Разные скорости которые заметны особенно после 400 пикселя. То есть я запускаю анимацию -> она доходит до 400 пикселя и идет -> я останавливаю -> я запускаю и дотягивается она уже не с первоначальной скоростью что хотелось бы избежать.

То есть грубо говоря так:

пройти надо 1000 px за 10 сек.
анимация остановлена на 500px
когда она продолжается то остаток в 500px должен быть пройден за то же время что и первый отрезок

К сожалению когда остановка идет на 343.4578 считать сложнее да и хотелось бы избежать этого.
Ответить с цитированием
  #4 (permalink)  
Старый 13.06.2013, 19:13
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от Duda.Ml1986@gmail.com
Разные скорости которые заметны особенно после 400 пикселя. То есть я запускаю анимацию -> она доходит до 400 пикселя и идет -> я останавливаю -> я запускаю и дотягивается она уже не с первоначальной скоростью что хотелось бы избежать.
http://jquery-docs.ru/Effects/animat...easingcallback
см параметр : linear
Если не устроит, то делать линейную анимацию через setInterval
Ответить с цитированием
  #5 (permalink)  
Старый 13.06.2013, 20:03
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

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>

Последний раз редактировалось рони, 13.06.2013 в 20:06.
Ответить с цитированием
  #6 (permalink)  
Старый 13.06.2013, 22:06
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Duda.Ml1986@gmail.com Посмотреть сообщение
Разные скорости которые заметны особенно после 400 пикселя. То есть я запускаю анимацию -> она доходит до 400 пикселя и идет -> я останавливаю -> я запускаю и дотягивается она уже не с первоначальной скоростью что хотелось бы избежать.

То есть грубо говоря так:

пройти надо 1000 px за 10 сек.
анимация остановлена на 500px
когда она продолжается то остаток в 500px должен быть пройден за то же время что и первый отрезок

К сожалению когда остановка идет на 343.4578 считать сложнее да и хотелось бы избежать этого.
jQuery не разрешает манипулировать анимацией после её старта - либо остановить, либо запустить с нуля.

выходом было бы добавить плагин для анимации (или вообще другой фреймворк скачать для неё), или же сделать костыльным способом через setInterval
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Остановка/ возобновление анимации фона san256 jQuery 8 03.07.2012 17:27
Отмена действия события во время выполнения анимации gunsoy Общие вопросы Javascript 2 12.06.2012 13:27
Определение смещения в момент анимации. 0931454574 jQuery 6 13.05.2011 09:55
Порядок выполнения анимации Tohin jQuery 3 03.07.2009 11:52
остановка анимации sdff Общие вопросы Javascript 10 27.10.2008 23:55