Je travaille sur des événements tactiles et des gestes, je veux pouvoir zoomer et faire pivoter l'objet, j'ai réussi à le faire glisser mais les gestes me posent problème. Les gestes fonctionnent mais ils sont saccadés, chaque fois que vous le pincez pour zoomer ou dézoomer ou essayez de le faire pivoter, il saute d'un doigt à l'autre.Javascript zoom et rotation en utilisant gesturechange et gestureend
Voici mon code pour référence.
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;
}
});
Y at-il de toute façon à faire de cette douceur, et l'empêcher de sauter des doigts, ou est l'approche que j'ai tort. Besoin de quelques conseils et astuces et aider
trouvé une solution
On dirait que le mon événement tactile pour glisser interféré avec les gestes thats pourquoi il sautait du doigt à doigt, comme cela était de ne pas utiliser les gestes comptent plutôt les touches sur l'objet et utilisent le toucher, la fin et la modification à la place.
Voici le code
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;
}
}
});
Un grand merci pour votre réponse! La chose habituelle à faire serait de le poster comme une réponse, plutôt que de l'éditer dans la question. (Il n'y a rien de mal à répondre à votre propre question.) – RichieHindle
il ne me laisse pas répondre tout de suite puisque je suis nouveau ici – ryuutatsuo
Votre première approche a-t-elle fonctionné sur Android 2.x? Je veux prendre en charge le geste de pincement, mais la deuxième approche (support tactile à grain fin) ne fonctionne que sur iOS (et Android 3.0/tablettes, et WebOS?). Merci d'avoir posté votre solution! –