Ecco come click-sposta-clic per creare un rettangolo
Creare queste variabili:
var isDrawing=false;
var startX;
var startY;
Nel vostro gestore di eventi MouseDown:
- Se questo è il clic iniziale, imposta il isDrawing flag e imposta startX/Y.
- Se questo è il clic finale, deselezionare la pagina isDrawing e disegnare il rettangolo.
Si potrebbe anche voler cambiare il cursore del mouse in modo che l'utente sappia che sta disegnando.
if(isDrawing){
isDrawing=false;
ctx.beginPath();
ctx.rect(startX,startY,mouseX-startX,mouseY-startY);
ctx.fill();
canvas.style.cursor="default";
}else{
isDrawing=true;
startX=mouseX;
startY=mouseY;
canvas.style.cursor="crosshair";
}
Ecco un violino: http://jsfiddle.net/m1erickson/7uNfW/
Invece di click-sposta-clic, come sull'utilizzo di trascinare per creare un rettangolo?
creare queste variabili:
var mouseIsDown=false;
var startX;
var startY;
Nel vostro gestore di eventi MouseDown, impostare il flag mouseIsDown e impostare lo startx/Y.
Opzionalmente, cambiare il cursore in modo che l'utente sappia come trascinare un rettangolo.
mouseIsDown=true;
startX=mouseX;
startY=mouseY;
canvas.style.cursor="crosshair";
Nel vostro gestore di eventi MouseUp, deselezionare il flag mouseIsDown e disegnare il rettangolo
Se è stato modificato il cursore, cambiare di nuovo.
mouseIsDown=false;
ctx.beginPath();
ctx.rect(startX,startY,mouseX-startX,mouseY-startY);
ctx.fill();
canvas.style.cursor="default";
È possibile rimuovere quella demo in * solo * le parti che riguardano il problema del disegno? Non sono affatto convinto che abbiamo bisogno delle parti incluso 'spin', o analisi di' document.location'. –
I tuoi 2 problemi sono gli stessi da dove lo vedo. Penso che potresti considerare di utilizzare un semplice test per vedere se questo è il "primo" clic o il "secondo" –