Skip to content

Commit

Permalink
fix deltaXY issue
Browse files Browse the repository at this point in the history
  • Loading branch information
jtangelder committed Jul 25, 2014
1 parent caa60b9 commit b29ea29
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 24 deletions.
34 changes: 28 additions & 6 deletions src/input.js
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,8 @@ function inputHandler(manager, eventType, input) {
var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));
var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));

input.isFirst = isFirst;
input.isFinal = isFinal;
input.isFirst = !!isFirst;
input.isFinal = !!isFinal;

if (isFirst) {
manager.session = {};
Expand All @@ -118,6 +118,7 @@ function inputHandler(manager, eventType, input) {
manager.emit('hammer.input', input);

manager.recognize(input);
manager.session.prevInput = input;
}

/**
Expand Down Expand Up @@ -145,14 +146,13 @@ function computeInputData(manager, input) {
var firstInput = session.firstInput;
var firstMultiple = session.firstMultiple;
var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;
var center = getCenter(pointers);

var center = input.center = getCenter(pointers);
input.timeStamp = now();
input.deltaTime = input.timeStamp - firstInput.timeStamp;
input.deltaX = center.x - offsetCenter.x;
input.deltaY = center.y - offsetCenter.y;

input.center = center;
computeDeltaXY(session, input);

input.angle = getAngle(offsetCenter, center);
input.distance = getDistance(offsetCenter, center);
input.offsetDirection = getDirection(input.deltaX, input.deltaY);
Expand All @@ -170,6 +170,28 @@ function computeInputData(manager, input) {
computeIntervalInputData(session, input);
}

function computeDeltaXY(session, input) {
var center = input.center;
var offset = session.offsetDelta;
var prevDelta = session.prevDelta;
var prevInput = session.prevInput || {};

if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {
prevDelta = session.prevDelta = {
x: prevInput.deltaX || 0,
y: prevInput.deltaY || 0
};

offset = session.offsetDelta = {
x: center.x,
y: center.y
};
}

input.deltaX = prevDelta.x + (center.x - offset.x);
input.deltaY = prevDelta.y + (center.y - offset.y);
}

/**
* velocity is calculated every x ms
* @param {Object} session
Expand Down
14 changes: 1 addition & 13 deletions tests/manual/log.html
Original file line number Diff line number Diff line change
Expand Up @@ -42,19 +42,7 @@
var log = document.querySelector("#log");
var debug = document.querySelector("#debug");

var mc = new Hammer.Manager(el);

mc.add(new Hammer.Swipe({ direction: Hammer.DIRECTION_HORIZONTAL }));
mc.add(new Hammer.Pan({ direction: Hammer.DIRECTION_HORIZONTAL })).recognizeWith(mc.get('swipe'));

mc.add(new Hammer.Rotate());
mc.add(new Hammer.Pinch());

mc.add(new Hammer.Press());

mc.add(new Hammer.Tap({ event: 'doubletap', taps: 2 }));
mc.add(new Hammer.Tap()).recognizeWith('tap');

var mc = new Hammer(el);
mc.on("swipe pan multipan press pressup pinch rotate tap doubletap", logGesture);

function DEBUG(str) {
Expand Down
20 changes: 15 additions & 5 deletions tests/manual/visual.html
Original file line number Diff line number Diff line change
Expand Up @@ -64,23 +64,27 @@
mc.add(new Hammer.Tap({ event: 'doubletap', taps: 2 }));
mc.add(new Hammer.Tap()).recognizeWith('doubletap');

mc.on("pan", onPan);
mc.on("panstart panmove", onPan);
mc.on("rotatestart rotatemove", onRotate);
mc.on("pinchstart pinchmove", onPinch);
mc.on("swipe", onSwipe);
mc.on("rotate", onRotate);
mc.on("pinch", onPinch);
mc.on("tap", onTap);
mc.on("doubletap", onDoubleTap);

mc.on("panend rotateend pinchend pancancel rotatecancel pinchcancel", resetElement);
mc.on("hammer.input", function(ev) {
if(ev.isFinal) {
resetElement();
}
});


function resetElement() {
el.className = 'animate';
transform = {
translate: { x: START_X, y: START_Y },
scale: 1,
rotate: 0
};
el.className = 'animate';

requestElementUpdate();

Expand Down Expand Up @@ -120,6 +124,11 @@
x: START_X + ev.deltaX,
y: START_Y + ev.deltaY
};



console.log(transform);

requestElementUpdate();
logEvent(ev.type);
}
Expand All @@ -137,6 +146,7 @@
function onPinch(ev) {
el.className = '';
transform.scale = ev.scale;

requestElementUpdate();
logEvent(ev.type);
}
Expand Down

0 comments on commit b29ea29

Please sign in to comment.