Meinst Du das Springen am Ende des Verschiebens? Das kann ich nur beim jetztigen Dreieck beobachten und es hat folgenden Grund:
x für links oben ist 0-deltax
Beim dragstop wird die x-Position von jCanvas gelesen (diese ist bei links oben ebenfalls -deltax) und diese wird in die Settings eingetragen.
Beim redraw wird diese aus den Settings gelesen und beim Zeichnen nochmals deltax subtrahiert, d. h. der Wert ist jetzt -2*deltax
Ich habe mal versucht, dies zu beheben, indem ich layer.x+deltax (= 0 bei links oben) in die Settings eingetragen habe, dies ist der Wert, der für den Benutzer richtig ist und damit scheint das Springen behoben zu sein.
function drawTriangle(fillColor, x, y, radius) {
var deltax = (1 - Math.sin(Math.PI * 2 / 3)) * radius;
console.log(deltax)
canvas.addLayer({
name: 'triangle',
type: 'polygon',
draggable: true,
fillStyle: fillColor,
x: x - deltax,
deltax: deltax,
y: y,
Alles anzeigen
function updatePosition(layer) {
var xPos = parseInt(Math.floor(layer.x), 10);
var yPos = parseInt(Math.floor(layer.y), 10);
var settings = getSettings();
deltax = layer.deltax;
if (!deltax) deltax = 0;
settings.x = xPos + deltax;
settings.y = yPos;
redraw(settings);
}
Alles anzeigen