Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Hammer.js 2—;收缩/缩放/平移图像_Javascript_Pinchzoom_Hammer.js - Fatal编程技术网

Javascript Hammer.js 2—;收缩/缩放/平移图像

Javascript Hammer.js 2—;收缩/缩放/平移图像,javascript,pinchzoom,hammer.js,Javascript,Pinchzoom,Hammer.js,我正在尝试构建类似于图像幻灯片的东西。因此,我需要一种方法来缩放(捏)和平移图像。为了正确地检测手势,我正在使用hammer.js(2.0.4.) 平移图像并不是一个真正的问题,但我就是想不出一种方法,可以用捏的手势来缩放图像,并且仍然将图像居中于手指所在的位置(“任何应用程序中的默认”行为) 我找到了一些解决这个问题的方法,但对我来说比较有效的方法是使用transform origin。虽然夹持时设置变换原点,但效果并不理想,所以我不能使用它。我写了同样的“问题”并提出了建议,但我真的无法专心

我正在尝试构建类似于图像幻灯片的东西。因此,我需要一种方法来缩放(捏)和平移图像。为了正确地检测手势,我正在使用hammer.js(2.0.4.)

平移图像并不是一个真正的问题,但我就是想不出一种方法,可以用捏的手势来缩放图像,并且仍然将图像居中于手指所在的位置(“任何应用程序中的默认”行为)

我找到了一些解决这个问题的方法,但对我来说比较有效的方法是使用
transform origin
。虽然夹持时设置
变换原点
,但效果并不理想,所以我不能使用它。我写了同样的“问题”并提出了建议,但我真的无法专心学习数学

我现在被这段代码困住了(在我算出数学后需要进行大量清理:):(我使用了一个hammer.js插件在桌面上用SHIFT+鼠标模拟挤压) 大部分都是非常直接的,主要的部分是缩放。但是,我当前的算法实际上不起作用:

( ev.center.x - panInitX ) - ( + ev.center.x - panInitX * (scale / scaleInit) )
这部分是计算x偏移量。除了
ev.center.x
panInitX
部分之外,我对y偏移量使用了几乎相同的一个

正如您在我的代码笔示例中所看到的,挤压并不真正准确,当您尝试平移和挤压时,情况会变得更糟。所以我在想办法解决这个问题

更新(3月6日):我的代码中有一个输入错误,我只是用更改更新了笔。缩放现在在桌面上按预期工作(模拟多点触摸夹)。但是,如果你在移动设备上试用,如果你同时捏和平移,它就不会真正起作用。

这有什么不同?