Estoy trabajando en algunos eventos táctiles y gestos, quiero poder hacer zoom y rotar el objeto, lo he logrado arrastrar con éxito pero los gestos me están causando problemas. Los gestos funcionan pero están entrecortados, cada vez que lo pellizcas para acercar o alejar la imagen o intentas rotarla, salta de dedo a dedo.Javascript zoom y rotar usando gesturechange y gestureend
Aquí está mi código de referencia.
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;
}
});
¿Existe de todos modos para hacer esto sin problemas, y evitar que se salta de los dedos, o es el enfoque que tomé mal. En la necesidad de algunos consejos y trucos y ayudar
encontrado una solución
parece que el mi evento táctil para arrastrar interferido con los gestos que por eso se mantuvo saltando de un dedo a otro, la forma de evitar esto era no utilizar en su lugar, los gestos cuentan los toques en el objeto y usan el inicio, el final y el cambio táctiles.
Este es el código
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;
}
}
});
¡Muchas gracias por publicar tu respuesta! Lo habitual sería publicarlo como una respuesta, en lugar de editarlo en la pregunta. (No hay nada de malo en responder tu propia pregunta.) – RichieHindle
no me deja responderlo todavía porque soy nuevo aquí – ryuutatsuo
¿Tu primer enfoque funcionó en Android 2.x? Quiero apoyar el gesto de pellizco, pero el segundo enfoque (soporte táctil refinado) solo funciona en iOS (y Android 3.0/tabletas, y WebOS?). ¡Gracias por postear tu solución! –