J'écris une application de dessin SVG simple, maintenant j'essaie d'optimiser le dessin au trait. La variante brute consiste à dessiner chaque 'lineTo' sur chaque événement mousemove. Cela crée une mauvaise netteté. Im utilisant la variable globale testInt pour simuler le retard entre les actions de lineTo, il donne vraiment une belle ligne lisse, mais cela semble être une mauvaise pratique. Quelqu'un pourrait-il suggérer une meilleure solution?JS svg peinture. Comment réduire la fréquence de dessin des lignes (événement mousemove)?
Voici mon code de fonction DrawLine (comme je l'ai dit modifie fondamentalement chemin> élément < existant):
drawLine: function(id, X, Y){
var path = document.getElementById(id);
if(path.getAttribute('d'))
{
testInt++;
if(testInt>=6)
{
PathHelper.addLineTo(path, X, Y);
testInt = 0;
}
}
else
{
PathHelper.moveTo(path, X, Y);
}
}
PathHelper est ne génère que la chaîne droite et il insère dans le chemin déjà créé.
Oh, j'ai oublié cette fonction de fermeture. Merci) –
J'ai découvert que le timeout n'est pas le meilleur choix parce que si l'utilisateur bouge sa souris lentement - cela crée cette 'netteté'. J'ai utilisé ma précédente dessication combinée à la logique de fermeture. –
@StasGarcia, comme une autre alternative: peut-être que vous pourriez calculer la distance entre les dernières coordonnées tracées et les coordonnées de la souris en cours. Ensuite, ne dessinez la nouvelle ligne que si la distance est supérieure à un certain seuil. –