У меня есть две функции: animation1()
и animation2()
. Каждая из этих функций содержит несколько анимаций (animate()
) в цепочке. Каждый набор анимации состоит из двух частей: объектjQuery mousewheel fire только один раз, пока анимация не закончена
двигаться в СЦЕНЫ1> скрыть их> показать объект на сцене 2.
Второй набор анимации в обратном направлении - скрыть объект на СЦЕНЫ2> показать объект на СЦЕНЫ1 и переместите их вправо
Анимация работает.
Что мне нужно, чтобы связать эти анимации mousewheel
с этими правилами:
- , когда я прокручиваю вниз> запустить animation1
- когда я прокручивать вверх> запустить animation2
- не запускать animation2 в то время как animation1 не закончил (и наоборот)
- (TODO) не работают naimation1 несколько раз из-за колесика мыши (то же самое для anim.2)
Это мой код, который работает, но работает несколько раз и создает большой беспорядок из-задельтах, выпущенных несколько раз. Я пробовал много решений, найденных на SO без везения. Я также попытался развязать mousewheel
, который работает; но я не знаю, как восстановить его обратно и прокрутить вверх.
$(window).bind('DOMMouseScroll MozMousePixelScroll mousewheel onmousewheel', function(e){
//$(this).unbind('DOMMouseScroll MozMousePixelScroll mousewheel onmousewheel');
if (e.originalEvent.wheelDelta < 0 || e.originalEvent.detail > 0) {
if ($('.scene1 .image').is(':visible') && $('#content').find(":animated").length === 0) {
animation1();
}
}
else {
if ($('.scene2 .image').is(':visible') && $('#content').find(":animated").length === 0) {
animation2();
}
}
});
Спасибо за любой совет!
UPDATE В это время, это мое лучшее решение .. анимация срабатывает только один раз (с использованием jquery.mousewheel, но также может быть использована без этой библиотеки) http://jsfiddle.net/wkupb1Ln/6/
$('#content').mousewheel(function(event) {
if ($('.image').is(':animated')) {
return false;
}
if ((event.deltaY < 0) && $('.scene2 .image').hasClass('invisible')) {
animation1();
}
if ((event.deltaY > 0) && $('.scene1 .image').hasClass('invisible')) {
animation2();
}
});
Спасибо, но таймаут не для меня. Я пробовал ваш код, а вторая анимация выполнялась несколько раз. – 5ulo