2012-05-11 3 views
0

Как говорится в названии .. есть ли какой-либо возможный способ иметь простейшую анимацию в javascript без использования Jquery, settimeout и setinterval. Я слишком долго занимаюсь исследованиями и ничего не могу найти. Не может быть способа сделать это, просто интересно. Ищите что-то перекрестный браузер, так что анимации CSS тоже не будут работать.Javascript анимация БЕЗ jquery/settimeout/setinterval

+0

Существует недостающая часть вопроса: почему 'setTimeout()' и 'setInterval()' проблема для вас? – Amadan

+0

Почему вы даже хотите сделать анимацию WITHOUT jquery? Вероятно, это лучший/самый быстрый/безопасный способ коснуться DOM. – frenchie

+0

Вы можете использовать анимированный GIF - поддерживаемый во всех браузерах и вообще не требующий javascript. – RobG

ответ

5

«Правильный» способ сделать большинство анимаций теперь с window.requestAnimationFrame, который действует как setTimeout тем, что он выполняет функцию обратного вызова в указанное время.

Он оптимизирован для работы со скоростью 60 кадров в секунду, а в некоторых браузерах (FF) он даст вам точное количество миллисекунд до следующего розыгрыша, чтобы вы могли точно рассчитать позиции анимации.

Google «requestAnimationFrame shim» для различных кросс-браузерных реализаций для старых браузеров. Прокладки все используют setTimeout — нет никакого способа обойти это.

+0

ЭТО ЧТО Я ИЩУ! СПАСИБО! – ALF

+1

'window.requestAnimationFrame' работает только в некоторых браузерах (например, ни одна версия IE до IE10, версия Safari до 5.3 и т. Д.). Подробнее см. Http://www.caniuse.com/#search=requestanimationFrame. Кроме того, для старых браузеров все используют 'setTimeout()' или 'setInterval()', поэтому нет никакого способа обойти это. Итак, если вам нужно работать в браузерах без таймеров, этот ответ не решает этого (потому что нет решения). – jfriend00

+1

@ jfriend00 - Разве это не то, что я сказал в своем последнем предложении? :) –

1

Нет, как вы можете это делать без перерывов/тайм-аутов и быть в состоянии сделать это через браузер? Вам нужно что-то, чтобы продолжать его запускать.

1

Нет, если вы не оживляете что-то на входе пользователя. Если вы что-то оживляете, когда пользователь запускает события перемещения мыши или события прокрутки страницы, он может работать, но он будет остановлен и на 100% зависит от пользователя, запускающего его.

0

Нет, я не думаю, что есть какой-либо способ сделать паузу в javascript без использования setTimeout() или setInterval().

Единственный вариант, о котором я могу думать, - это оживить javascript для некоторого события, такого как ответ объекта XMLHttpRequest, что нелепо.

Если вы ищете удобное «приостановление выполнения для (x) миллисекунд и продолжаете« как Thread.sleep() в JavaScript или usleep() на Unix-системах, нет такой вещи печально.

Я помню, что для синхронизации времени на скрипте Ruby, запущенном в Google Sketchup, кто-то пошел на проблему создания невидимого окна HTML, чтобы запустить небольшой JavaScript с помощью setInterval(), чтобы у них был механизм синхронизации. Я думаю, что если вы зайдете на такую ​​длину, чтобы запустить JavaScript и по-прежнему использовать setInterval(), то, вероятно, нет другого выбора.

Смежные вопросы