2013-11-07 3 views
0

Я пытаюсь прокрутить тело страницы, которую я создаю вверх и вниз, когда устройство наклоняется вверх и вниз.прокрутите вниз, а не прокрутите влево

Этот плагин прокручивает влево и вправо, когда устройство наклоняется.

Как я могу прокручивать вверх и вниз с помощью наклона вверх и вниз?

(function($) { 
$.fn.tilt = function(params) { 
    items = this; 

    params = $.extend({sensitivity: 1}, params); 

    ax = ay = 0; 

    window.addEventListener('devicemotion', function (e) { 
     ax = e.accelerationIncludingGravity.x * params.sensitivity; 
     ay = -e.accelerationIncludingGravity.y * params.sensitivity; 

     if(ax > 0) { 
      ax -= params.sensitivity; 
      if(ax < 0) ax = 0; 
     } else if(ax < 0) { 
      ax += params.sensitivity; 
      if(ax > 0) ax = 0; 
     } 

    }, false); 

    mainLoop = setInterval("moveMe()"); 

    moveMe = function() { 
     $(items).each(function() { 
      scrollPos = $(this).scrollLeft() + ax; 
      $(this).scrollLeft(scrollPos); 
     }); 
    } 
} 
})(jQuery); 

ответ

1

Выполните то же самое, но с параметром y?

(function($) { 
$.fn.tilt = function(params) { 
    items = this; 

    params = $.extend({sensitivity: 1}, params); 

    ax = ay = 0; 

    window.addEventListener('devicemotion', function (e) { 
     ax = e.accelerationIncludingGravity.x * params.sensitivity; 
     ay = -e.accelerationIncludingGravity.y * params.sensitivity; 

     if(ay > 0) { 
      ay -= params.sensitivity; 
      if(ay < 0) ay = 0; 
     } else if(ay < 0) { 
      ay += params.sensitivity; 
      if(ay > 0) ay = 0; 
     } 

    }, false); 

    mainLoop = setInterval("moveMe()"); 

    moveMe = function() { 
     $(items).each(function() { 
      scrollPos = $(this).scrollTop() + ay; 
      $(this).scrollTop(scrollPos); 
     }); 
    } 
} 
})(jQuery); 
+0

О, я не знал, что вы можете использовать scrollTop() таким образом! Спасибо! – gomangomango

+0

Кажется, он не работает. Я реализовал его на этой странице: http://goo.gl/8dZsUQ – gomangomango

0

Если вы используете JQuery, почему бы не использовать $.scrollTop() для изменения значения вертикальной прокрутки элемента?

var tilt_interval_id = setInterval(function(items) { onDeviceTilt(items); }, 50);  

function onDeviceTilt(items) { 
    $(items).each(function() { 
     var newScrollX = $(this).scrollLeft() + ax; 
     var newScrollY = $(this).scrollTop() + ay; 
     //Update the horizontal and vertical scroll positions 
     $(this).scrollLeft(newScrollX); 
     $(this).scrollTop(newScrollY); 
    }); 
} 

//Later, if you wish to clear the interval ... 
clearInterval(tilt_interval_id); 
+0

Почему я хочу очистить интервал? – gomangomango

+0

Как я уже сказал ... «Если хочешь». Я просто хотел показать, как вы можете начать и прекратить поведение, если захотите. Вам действительно не нужна эта строка, чтобы заставить ваш код работать. –

+0

А, ладно. Спасибо, что объяснили. – gomangomango

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