Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.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
hammer.js在改变挤压方向时表现出挤压滞后(在Android上测试)_Android_Jquery_Hammer.js - Fatal编程技术网

hammer.js在改变挤压方向时表现出挤压滞后(在Android上测试)

hammer.js在改变挤压方向时表现出挤压滞后(在Android上测试),android,jquery,hammer.js,Android,Jquery,Hammer.js,我注意到,在使用缩放事件时,如果您在不将手指从屏幕上移开的情况下从“收缩”切换到“收缩”(反之亦然),则“收缩缩放”事件会出现明显的延迟 我只在安卓系统上测试过,因为我只有安卓手机和平板电脑 通常情况下,即使用户已反转操作,变焦仍会在转弯和再次熄灭之前继续进行。当使用这种方法放大照片之类的东西时,这是显而易见的 我在演示中使用的jQuery代码非常简单: var myElement = document.getElementById('zoom_div'); var hammertime = n

我注意到,在使用缩放事件时,如果您在不将手指从屏幕上移开的情况下从“收缩”切换到“收缩”(反之亦然),则“收缩缩放”事件会出现明显的延迟

我只在安卓系统上测试过,因为我只有安卓手机和平板电脑

通常情况下,即使用户已反转操作,变焦仍会在转弯和再次熄灭之前继续进行。当使用这种方法放大照片之类的东西时,这是显而易见的

我在演示中使用的jQuery代码非常简单:

var myElement = document.getElementById('zoom_div');
var hammertime = new Hammer(myElement);
hammertime.get('pinch').set({ enable: true });

hammertime.on("pinchin", onpinchin).on("pinchout", onpinchout);

function onpinchin(e) {
    document.getElementById("zoom_div").innerHTML = "IN";
}

function onpinchout(e) {
    document.getElementById("zoom_div").innerHTML = "OUT";
}
请参见以下示例:


在不将手指从屏幕上移开的情况下进行捏入和捏出,您将看到对相反方向的反应通常会明显滞后。

我的问题的解决方案是删除Hammer.js以进行捏入事件处理,而是实现我自己的捏入处理程序。我继续在其他触摸活动中使用锤子

//Non - hammer detection
$('#zoom_div_manual').on('touchstart', function(e){
    trigger_start = true;
});

$('#zoom_div_manual').on('touchmove', function(e){
    pinchMove(e);
});

$('#zoom_div_manual').on('touchend', function(e){
    if(scaling) {
    trigger_start = false;
    }
});

var last_pinch = 0;

function pinchMove(e) {
  e.preventDefault();

  var dist =Math.sqrt((e.originalEvent.touches[0].pageX-e.originalEvent.touches[1].pageX) * (e.originalEvent.touches[0].pageX-e.originalEvent.touches[1].pageX)+(e.originalEvent.touches[0].pageY-e.originalEvent.touches[1].pageY) * (e.originalEvent.touches[0].pageY-e.originalEvent.touches[1].pageY));

  if(dist => last_pinch)document.getElementById("zoom_div_manual").innerHTML = "IN";
  if(dist < last_pinch)document.getElementById("zoom_div_manual").innerHTML = "OUT";

  last_pinch = dist;

}
//非锤式检测
$('zoom_div_manual')。打开('touchstart',函数(e){
触发器\启动=真;
});
$('zoom#u div_manual')。打开('touchmove',函数(e){
pinchMove(e);
});
$('zoom#u div_manual')。打开('touchend',函数(e){
如果(缩放){
触发器启动=错误;
}
});
var last_pinch=0;
函数pinchMove(e){
e、 预防默认值();
var dist=Math.sqrt((e.originalEvent.touchs[0].pageX-e.originalEvent.touchs[1].pageX)*(e.originalEvent.touchs[0].pageX-e.originalEvent.touchs[1].pageX)+(e.originalEvent.touchs[0].pageY)*(e.originalEvent.touchs[0].pageY-e.originalEvent.touchs[1].pageY));
if(dist=>last\u pinch)document.getElementById(“zoom\u div\u manual”).innerHTML=“IN”;
if(dist
下面的JSFIDLE中的绿色框演示了以下内容。我已经包括了锤子版本,以便在上面进行比较。您将看到与Hammer版本相比没有滞后:


我还没有在iOS上测试过

所以我也面临同样的问题。我搜索了很多,找到了一个解决方案,至少对我的问题是这样。 基于munrocket:中的代码。 您需要保存将要调整的比例。 我希望这有帮助

//adjustScale = 1;
//scale = 1

hammertime.on('pinchmove',function(e){
 scale = adjustScale * ev.scale;

 //do another things you want to

}
hammertime.on('pinchend',function(e){
  adjustScale = scale;
}