Эффект прокрутки iPhone Javascript в ускорении мыши iFrame / Javascript

Я пытаюсь воссоздать событие прокрутки / прокрутки iPhone в окне, используя JavaScript.

Начиная с JQuery, я измеряю ускорение и смещение мыши во время нажатия, перетаскивания и отпускания событий, используя таймер:

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);

});

Теперь проблема заключается в том, чтобы перевести это ускорение в движение экрана. Существуют ли какие-либо алгоритмы (замедления?) Или библиотеки анимации, которые могут помочь мне в этом? (Я изучил Janery .animate (), но не уверен, как применять его непрерывно во время событий перетаскивания!

Обновление - окончательное решение здесь:

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

 jb.19 дек. 2008 г., 18:59
С помощью ответа я более или менее решил этот вопрос:johnboxall.github.com/iphone.html

Ответы на вопрос(3)

 robertp02 нояб. 2011 г., 20:52
К сожалению, эта ссылка не работает :(

когда искал библиотеки кинетической / импульсной прокрутки:

iScrollZynga ScrollerOverscrollTouchScrolljScrollTouch
 TheBlackBenzKid19 окт. 2011 г., 16:57
удивительно. спасатель жизни + AAA ++ Repped
Решение Вопроса

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

http://www.faqts.com/knowledge_base/view.phtml/aid/14742/fid/53

Вот выдержка:

Затем этот обработчик устанавливает захват событий для движения мыши и сохраняет позиции курсора мыши в переменных mouseX и mouseY. Затем он запускает таймер monitorMouse (), который измеряет скорость курсора мыши путем выборки значений в этих переменных через равные промежутки времени. Переменные mouseLeft и mouseTop хранят позиции мыши для каждой выборки, а частота выборки устанавливается равной 100 миллисекундам в переменной monitor.timerDelay.

И некоторые авторские коды:

nn4 = (document.layers)? true:false;
mouseLeft = mouseTop = mouseX = mouseY = 0;
monitor = {
    timerDelay:100,
    moveLimit:2,
    sampleLimit:10
};

function startMonitor(thisText) {
    if (!tip) return;
    toolTipText = thisText;
    writeTooltip(toolTipText);

    document.captureEvents(Event.MOUSEMOVE);
    document.onmousemove = function (evt) {
        mouseX = evt.pageX;
        mouseY = evt.pageY;
        return true;
    }
    monitorMouse();
}

function stopMonitor() {
    if (!tip) return;
    hideTooltip();
        if (monitor.timer) {
        clearTimeout(monitor.timer);
        monitor.timer = null;
    }
    document.releaseEvents(Event.MOUSEMOVE);
    document,.onmousemove = null;
    monitor.slowSamples = 0;
}

function monitorMouse() {
    if (Math.abs(mouseX - mouseLeft)   > monitor.moveLimit
        || Math.abs(mouseY - mouseTop) > monitor.moveLimit)
    {
        monitor.slowSamples = 0;
    }
    else if (++monitor.slowSamples > monitor.sampleLimit) {
        showTooltip();
        return;
    }
    mouseLeft = mouseX;
    mouseTop  = mouseY;
    monitor.timer = setTimeout("monitorMouse()",monitor.timerDelay);
}

Ваш ответ на вопрос