Tôi đang làm việc trên một số sự kiện và cử chỉ cảm ứng, tôi muốn có thể phóng to và xoay đối tượng, tôi đã thực hiện thành công nó có thể kéo được nhưng cử chỉ đang gây rắc rối cho tôi. Các cử chỉ đang hoạt động nhưng chúng bị thay đổi, bất cứ khi nào bạn véo nó để phóng to hoặc thu nhỏ hoặc cố gắng xoay nó, nó nhảy từ ngón tay đến ngón tay.Phóng to và xoay bằng cách sử dụng gesturechange và gestureend
Đây là mã của tôi để tham khảo.
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;
}
});
Có cách nào để làm mịn và ngăn không cho nhảy từ ngón tay hoặc cách tiếp cận tôi đã làm sai. Cần một số mẹo và thủ thuật và giúp
tìm thấy một giải pháp
Có vẻ như sự kiện liên lạc của tôi cho kéo can thiệp với những cử chỉ thats tại sao nó cứ nhảy từ ngón tay để ngón tay, các con đường xung quanh này là không sử dụng cử chỉ thay vì đếm các điểm chạm trên đối tượng và sử dụng chạm bắt đầu, kết thúc và thay vào đó thay vào đó.
Đây là mã
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;
}
}
});
Cảm ơn bạn đã đăng câu trả lời! Điều thông thường cần làm là đăng câu trả lời, thay vì chỉnh sửa câu hỏi đó thành câu hỏi. (Không có gì sai khi trả lời câu hỏi của riêng bạn.) – RichieHindle
nó không cho phép tôi trả lời nó ngay từ khi tôi mới ở đây – ryuutatsuo
Phương pháp tiếp cận đầu tiên của bạn có hoạt động trên Android 2.x không? Tôi muốn hỗ trợ cử chỉ nhúm nhưng cách tiếp cận thứ hai (hỗ trợ cảm ứng hạt mịn) chỉ hoạt động trên iOS (và Android 3.0/máy tính bảng và WebOS?). Cảm ơn đã đưa ra giải pháp của bạn! –