Я работаю над некоторыми событиями касания и жестами, я хочу иметь возможность масштабировать и вращать объект, я успешно сделал его перетаскиваемым, но жесты доставляют мне проблемы.Жесты работают, но они изменчивы: всякий раз, когда вы сжимаете его, чтобы увеличить или уменьшить масштаб или попытаетесь повернуть его, он переходит с пальца на палец.
Вот мой код для справки.
var width = 300; var height = 300; var rotation = 0;
$('.dynamic').live("gesturechange gestureend", function(e){
var orig = e.originalEvent;
if(e.type == 'gesturechange'){
e.preventDefault();
$(this).css("width", parseFloat(width) * orig.scale);
$(this).css("height", parseFloat(height) * orig.scale);
$(this).css("-webkit-transform","rotate(" + ((parseFloat(rotation) + orig.rotation) % 360) + "deg)");
}else if(e.type == 'gestureend'){
a.w[ids] = parseFloat(width) * orig.scale;
a.h[ids] = parseFloat(height) * orig.scale;
a.rotation[ids] = (parseFloat(rotation) + orig.rotation) % 360;
}
});
Есть ли в любом случае, чтобы сделать это плавным и не допустить его выпрыгивания из пальцев, или я ошибся.Нуждаюсь в некоторых советах и подсказках и помощи
нашел решение
Похоже, что событие my touch для перетаскивания мешало жестам, поэтому оно продолжало прыгать от пальца к пальцу, и наоборотбыло не использовать жесты вместо того, чтобы считать количество касаний на объекте и вместо этого использовать сенсорное начало, конец и изменение.
Вот код
var touches = 0; var width = 300; var height = 300; var rotation = 0;
$('.dynamic').live("touchstart touchmove touchend", function(e){
var orig = e.originalEvent;
if(e.type == 'touchstart'){
if(orig.touches.length == 1){
touches = 1;
}else if(orig.touches.length == 2){
touches = 2;
}
}else if(e.type == 'touchmove'){
e.preventDefault();
if(touches == 2){
$(this).css("width", parseFloat(width) * orig.scale);
$(this).css("height", parseFloat(height) * orig.scale);
$(this).css("-webkit-transform","rotate(" + ((parseFloat(rotation) + orig.rotation) % 360) + "deg)");
}
}else if(e.type == 'touchend'){
if(touches == 2){
a.w[ids] = parseFloat(width) * orig.scale;
a.h[ids] = parseFloat(height) * orig.scale;
a.rotation[ids] = (parseFloat(rotation) + orig.rotation) % 360;
}
}
});