正如您在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
这个库太棒了,我希望我可以在我的项目中实现它。感谢您的任何帮助/建议。
答案 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
};
希望这会有所帮助