- \r
- step = this.steps.shift();\r
- \r
- if( step.x === startX && step.y === startY ) step.time = 0;\r
-\r
- this.animating = true;\r
- this.moved = true;\r
- \r
- //if (this.options.useTransition) {\r
- //this._transitionTime(step.time);\r
- this._updateScrollPosition( step.x, step.y, step.time );\r
- //this.animating = false;\r
- this.xnodeScroller.listenOnce( X.UI.Event.ANIME_END, this );\r
- //step.time ? X.Dom.Event.add( this.scroller, TRNEND_EV, this ) /* this._bind(TRNEND_EV) */ : this._resetPos(0);\r
- //return;\r
- //}\r
- //this._doAnimate( X.Timer.now(), step, startX, startY );\r
- },\r
-\r
-/*\r
- _doAnimate : function( startTime, step, startX, startY ){\r
- var now =X.Timer.now(),\r
- easeOut, newX, newY;\r
-\r
- if (now >= startTime + step.time) {\r
- this._updateScrollPosition(step.x, step.y);\r
- this.animating = false;\r
- //if (this.options.onAnimationEnd) this.options.onAnimationEnd.call( this ); // Execute custom code on animation end\r
- this._startAnime();\r
- return;\r
- };\r
-\r
- now = (now - startTime) / step.time - 1;\r
- easeOut = m.sqrt(1 - now * now);\r
- newX = (step.x - startX) * easeOut + startX;\r
- newY = (step.y - startY) * easeOut + startY;\r
- this._updateScrollPosition(newX, newY);\r
- if( this.animating ) this.animeTimerID = X.Timer.requestFrame( this, this._doAnimate, [ startTime, step, startX, startY ] );\r
- },\r
-*/\r
-\r
- _momentum: function (dist, time, maxDistUpper, maxDistLower, size) {\r
- var deceleration = 0.0006,\r
- speed = ABS(dist) / time,\r
- newDist = (speed * speed) / (2 * deceleration),\r
- newTime = 0, outsideDist = 0;\r
-\r
- // Proportinally reduce speed if we are outside of the boundaries\r
- if (dist > 0 && newDist > maxDistUpper) {\r
- outsideDist = size / (6 / (newDist / speed * deceleration));\r
- maxDistUpper = maxDistUpper + outsideDist;\r
- speed = speed * maxDistUpper / newDist;\r
- newDist = maxDistUpper;\r
- } else if (dist < 0 && newDist > maxDistLower) {\r
- outsideDist = size / (6 / (newDist / speed * deceleration));\r
- maxDistLower = maxDistLower + outsideDist;\r
- speed = speed * maxDistLower / newDist;\r
- newDist = maxDistLower;\r
- }\r
-\r
- newDist = newDist * (dist < 0 ? -1 : 1);\r
- newTime = speed / deceleration;\r
-\r
- return { dist: newDist, time: m.round(newTime) };\r
- },\r