我正在用HTML / javascript开发一个移动应用程序,用户可以在某个时候捏入(放大)图像以显示图像的特定部分。缩放的结果是图像的可见部分(众所周知),而不是整个图像。我想获得当触摸事件触发时(当用户从捏捏中抬起手指时)可见的部分(用户具有放大的程度以及图像的哪个部分)。
我想到了各种方法,希望得到您的意见。
我用PhoneGap包装了应用程序,因此我能够编写本机代码,如果这样做有任何帮助的话...
最佳答案
zoom是2个手指的手势,因此您必须使用event.targetTouches.length == 2在touchmove上进行监听
然后从每个手指读取X和Y坐标
图像缩放中心将为event.targetTouches [0] .pageX-event.targetTouches 1 .pageX和event.targetTouches [0] .pageY-event.targetTouches 1 .pageY与您的滚动位置或图像位置有关(注意+或-)
并且您的比例因子应该是vectorLengthCurrent-vectorLengthStart
见http://www.html5rocks.com/en/mobile/touch/
图片:
例:
图片:
左:-100px | startFinger [0] .pageX:50像素| currentFinger [0] .pageX:55px | startFinger 1 .pageX:150像素| currentFinger 1 .pageX:140像素
因此中心应为:startFinger 1 .pageX-startFinger [0] .pageX-左
(仅当startFinger 1 .pageX大于| Y的方式相同时)
vector 长度:
sqrt(x ^ 2 + y ^ 2);