Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Javascript iPhone Scroll Effect in an iFrame / Javascript Mouse Acceleration

I'm trying to recreate the iPhone flick / scroll event in a window using JavaScript.

Starting with JQuery, I'm measuring the mouse's acceleration and offset during click - drag - release events using a timer:

var MouseY = {

    init: function(context) {
        var self = this;
        self._context = context || window
        self._down = false;
        self._now = 0;
        self._last = 0;
        self._offset = 0;
        self._timer = 0;
        self._acceleration = 0;

        $(self._context).mousedown(function() {self._down = true;});
        $(self._context).mouseup(function() {self._down = false;});
        $(self._context).mousemove(function(e) {self.move(e);});

    },

    move: function(e) {
        var self = this;
        self._timer++;
        self._last = self._now;
        self._now = e.clientY + window.document.body.scrollTop;
        self._offset = self._now - self._last;
        self._acceleration = self._offset / self._timer;
    },

    reset: function() {
        this._offset = 0;
        this._acceleration = 0;
        this._timer = 0;
    }
};


$(function() {
    MouseY.init();
    setInterval(function() {
        $('#info').html(
            '_acceleration:' + MouseY._acceleration + '<br />' +
            '_now:' + MouseY._now + '<br />' +
            '_offset:' + MouseY._offset + '<br />' +
            '_timer:' + MouseY._timer + '<br />'
        );
        MouseY.reset();
    }, 10);

});

Now the problem is translating that acceleration into screen movement - are there any algorithms (easing?) or animation libraries that could help me out on this? (I've looked into JQuery's .animate() but I'm unsure of how to apply it continuously during the drag events!

Update - final solution here:

http://johnboxall.github.com/iphone.html

like image 935
jb. Avatar asked Dec 19 '08 01:12

jb.


1 Answers

Here's what I found when looking for kinetic/momentum scrolling libraries:

  • iScroll
  • Zynga Scroller
  • Overscroll
  • TouchScroll
  • jScrollTouch
like image 106
ʇsәɹoɈ Avatar answered Oct 14 '22 14:10

ʇsәɹoɈ