Предположим, у меня есть div, и я использую .animate({opacity:0},400, function(){});
для своих детей. Возможно ли получить оставшееся время для анимации? например, 200 мс, или 0, если нет анимации? Спасибо.Есть ли способ получить оставшееся время анимации?
ответ
Чтобы помочь вам лучше понять, как вы можете использовать step
функцию [а отправленный gdoron]
Я создал пример использования шаг функцию, чтобы получить оставшееся время:
(нажмите кнопку get state!
, чтобы остановить анимацию и получить оставшееся время!)
demo with distance
demo with opacity
Distance пример JQuery:
var time = 4000;
var distance = 300;
var currentTime = 0;
$('#ball').animate({
left: distance
}, {
duration: time,
step: function (now, fx) {
currentTime = Math.round((now * time)/distance);
var data = fx.prop + ' ' + Math.round(now) + '; <b>' + currentTime + 'ms</b> ';
$('body').append('<p>' + data + '</p>');
},
easing: 'linear'
});
$('#getTime').click(function() {
$('#ball').stop();
$('body').prepend('<p>currentTime is:' + currentTime + ' ms; REMAINING: ' + (time - currentTime) + 'ms</p>');
});
- Вы можете увидеть, как я использовал
fx.prop
внутриanimation step
, чтобы получить свойство (left
), который в настоящее время анимированный. - Вы можете увидеть, как: зная время анимации и расстояние (непрозрачность, независимо от ...) можно легко извлечь «остановлен/пауза» состояние некоторой простой математике (
(now*time)/distance
) и благодаря возвращеннойnow
стоимости ,
Спасибо, это очень полезно! И кажется, что это не сильно ударит по производительности, если мы ограничим функцию шага только записью переменной. Во всяком случае, это не будет называться каждые 1 мс или что-то еще. – Anonymous
@ user1125062 Он не должен, потому что мы получаем доступ только к тому, что уже запускает нашу анимацию. –
Я понятия не имею, почему вам это нужно, но step
может помочь вам извлечь это значение:
Шаг Функция
Вторая версия .animate() обеспечивает вариант шага - функция обратного вызова, которая запускается на каждом этапе анимации. Эта функция полезна для включения пользовательских типов анимации или изменения анимации по мере ее появления. Он принимает два аргумента (теперь и fx), и это устанавливается для анимированного элемента DOM.
Теперь: числовое значение свойства анимируемый на каждый шаге
FX: ссылка на объект-прототипа jQuery.fx, который содержит ряд свойств, такие как эль для анимированного элемента, начала и заканчивается для первого и последнего значения анимированного свойства, соответственно, и prop для анимированного свойства.
Хммм, но что я должен делать с этим? :) – Anonymous
@ пользователь1125062. Вы можете получить текущее значение, первое значение, последнее значение и т. Д., Просто играйте с ним. В любом случае, я уверен, что есть другие способы делать то, что вы пытаетесь сделать ... – gdoron
Без setInterval или этого метода нет, AFAIK. Это единственный способ получить это. – inhan
Слушайте, не обращая внимания на функцию step
, о которой все говорят. Я когда-то нуждался в том, что вы делали, и написал свой собственный, что просто положил его назад, спрогнозировав время, оставшееся после просмотра общего времени анимации (должно быть известно вам, поскольку вы когда-то дали этот номер jQuery) и quotient текущая и целевая непрозрачность. Затем просто умножьте это частное с общим временем анимации, получив сумму, вычитаемую из общего времени. Просто как тот.
Псевдо-код:
func calculate-time-left-in-a-running-fade-in-animation:
{
var current_opacity = $elem.css('opacity');
var target_opacity = this.getTargetOpacity();
var total = this.getTotalAnimationTime();
var quotient = current_opacity/target_opacity;
return total - quotient * total;
}
Интересный подход, не правда ли! Хотя, если точность была важна, шаг - это единственный путь. – Anonymous
Получение значения атрибута самостоятельно или использование переменной now является тем же самым, если анимация приостановлена. В шаге-примере jQuery @roXon дано будет много накладных расходов, на каждом шаге анимации. Могут даже ввести глобальные переменные, например, на самом деле. Если вы планируете приостанавливать анимацию перед вычислением (опять как это было в примере) и затем программно возобновлять анимацию, тогда совершенно нет никакой разницы. Я бы даже сказал, что получение этого вычисленного значения под запущенной анимацией даст одинаковые результаты. –
Сохраненный продукт шаговой логики, вычисленное значение оставшегося времени, не похож на живой список, значение не обновляется до предельно точного значения. И это будет не что иное, как «старое» вычисление, которое вы используете всякий раз, когда вы его используете. У вас даже будет средний человек, ответственный за преодоление этого информационного разрыва, ступенчатую функцию, которая должна теоретически пресекать точность. Но если вы вместо этого сделаете то же самое вычисление, когда вам нужно знать оставшееся время, не было бы даже более точным? И еще дешевле, как в удобочитаемости кода, так и в обработке накладных расходов. –
- 1. Есть ли способ получить ссылку, чтобы увидеть оставшееся время в локальном уведомлении и обновить его?
- 2. можно получить время, оставшееся на событии glib?
- 3. Как получить время, оставшееся в Groupon Html?
- 4. Есть ли способ получить каждый кадр анимации GIF в Python?
- 5. Есть ли способ получить конечное значение анимации в jQuery?
- 6. Есть ли способ, чтобы получить значения образуют Swiffy анимации
- 7. Как получить оставшееся время сеанса от CakePHP?
- 8. Есть ли способ анимации переменных Paintcode?
- 9. Есть ли способ анимации макетов? [Android]?
- 10. Есть ли способ отключить анимацию анимации ActionBar?
- 11. Кратчайшее оставшееся время Планирование
- 12. Есть ли способ уловить время, оставшееся на событии SetTimer Windows API?
- 13. Есть ли способ изменить время?
- 14. Как узнать, есть ли дата в двух других датах, а также время и оставшееся время?
- 15. Графически показывая оставшееся время
- 16. Оставшееся время для анимации эффект ontouch не работает в android
- 17. Как получить оставшееся время выполнения скрипта оболочки?
- 18. В Swift (iOS) есть ли способ получить местоположение UIImageView во время анимации этого объекта?
- 19. колба: получить время сеанса, оставшееся через AJAX
- 20. System.Timers.Timer Как получить оставшееся время до Elapse
- 21. Получить оставшееся время задержки задачи в libgdx
- 22. Как получить оставшееся время для завершения деятельности?
- 23. Как получить оставшееся время загрузки файла
- 24. JQuery: Есть ли возможность получить конец анимации?
- 25. Рассчитать оставшееся время
- 26. Любой способ узнать, есть ли запланированное выключение?
- 27. Показать оставшееся время в wpf
- 28. Android: Есть ли способ получить размер экрана?
- 29. Показать оставшееся время TimeSpan
- 30. Кратчайших оставшееся время Алгоритм
Просто из любопытства ... почему вам нужно это значение? –
@ RokoC.Buljan. Думаю, это хобби. Он время анимации коллекции. – gdoron
У меня проблема с очередью обратных вызовов для детей - она не всегда срабатывает, и определить, к какой дочерней очереди ее нелегко определить, поэтому я хотел попробовать с помощью setTimeout сделать ее более надежной. – Anonymous