在hammerjs.github.io示例页面中防止元素重置为默认位置(hammer js ver2.0.1)

时间:2014-07-24 12:45:16

标签: javascript hammer.js

正如您在hammerjs.github.io网站上看到的,每当您拖动,滑动,捏合或旋转白色方块时,它都会重置回默认位置。我已经尝试但未能阻止这种行为,我不希望它重置回到它的位置。我选择这个例子是因为它是唯一适合我在Windows Phone 8上运行的地图项目的例子。

我的方法是在onSwipe函数中取消了resetElementEnd(),我也取消了

mc.on("panstart rotatestart pinchstart", resetElementStart);
mc.on("panend rotateend pinchend pancancel rotatecancel pinchcancel", resetElementEnd);

但是每当我平移它之前它就会重置回默认位置然后才能进行平移,这似乎是许多问题的根源。我知道这与startX和startY有关,但我真的不知道它们的用途。

var startX = Math.round((el.parentNode.offsetWidth - el.offsetWidth) / 2);
var startY = Math.round((el.parentNode.offsetHeight - el.offsetHeight) / 2);
...

function onPan(ev) {
    transform.translate = {
        x: startX + ev.deltaX,
        y: startY + ev.deltaY
    };
    requestElementUpdate();
}

这里的链接包括html,css和js文件,它们基本上是hammerjs.github.io示例的简化版本,index.js文件是原始文件,而modifiedIndex.js是同一个文件但是我的取消我上面提到的一些行。 https://www.mediafire.com/?y7wvady7bhmyrs9

这个库太棒了,我希望我可以在我的项目中实现它。感谢您的任何帮助/建议。

1 个答案:

答案 0 :(得分:1)

你必须记住光标的最后位置。

在resetElementEnd()上,您将保存翻译X和Y

function resetElementEnd() {

    startX = transform.translate.x;
    startY = transform.translate.y;

    el.className = 'animate';
    requestElementUpdate();
}

确保完全创建了转换对象: 在第88行你替换

var transform;

进入

var transform = {
    translate: { x: startX, y: startY },
    scale: 1,
    rotate: 0
};

希望这会有所帮助