Scopo del mio codice:Ottenere coordinate di due posti diversi su tela HTML
disegnare un piccolo rettangolo su una tela HTML ogni volta che un utente fa clic sul tela. Il rettangolo dovrebbe avere un numero piccolo che rappresenta il numero di rettangoli creati dall'utente.
L'utente deve essere in grado di collegare due rettangoli utilizzando una linea retta. (Preferibilmente semplicemente premendo il tasto sinistro del mouse, e prendendo il mouse dal primo rettangolo a secondo rettangolo)
approccio e il mio tentativo
Come si può vedere in questa jsFiddle, sono stato in grado di raggiungere la prima parte di sopra molto bene. Facendo clic sulla tela, viene creato un rettangolo con un numero al suo interno. Ma sono davvero all'oscuro della seconda parte.
Come faccio a connettere l'utente con due rettangoli creati? Voglio che la connessione venga effettuata solo se c'è un rettangolo (quindi avrei bisogno di memorizzare le coordinate di ogni rettangolo che è stato fatto, va bene, perché posso usare un array per questo). Fondamentalmente, voglio solo verificare se il mouse era in un posto e mouseup all'altro. Come ottengo queste due coordinate diverse (una di mouse e l'altra di mouseup) e traccia una linea tra di esse? Mi hanno dato il violino sopra, ma ancora ecco la mia jquery:
$(function() {
var x, y;
var globalCounter = 0;
$('#mycanvas').on("click", function (event) {
x = event.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
x -= mycanvas.offsetLeft;
y = event.clientY + document.body.scrollTop + document.documentElement.scrollTop;
y -= mycanvas.offsetLeft;
// alert("x:"+x+"y: "+y);
drawRectangle(x, y);
});
function drawRectangle(x, y) {
var acanvas = document.getElementById("mycanvas");
var context = acanvas.getContext("2d");
context.strokeRect(x, y, 25, 25);
globalCounter++;
writeNo(x, y, globalCounter);
}
function writeNo(x, y, n) {
var acanvas = document.getElementById("mycanvas");
var context = acanvas.getContext("2d");
context.font = "bold 14px sans-serif";
context.fillText(n, x + 8, y + 12.5);
}
});
La questione principale è quindi: che collega i due rettangoli fatte da mouseDrag
Come faccio a raggiungere questo obiettivo? Grazie.
come si presenta la "connessione"? –
Il collegamento è solo una linea, una linea retta che collega i centri di due rettangoli –
È necessario prima utilizzare eventi diversi. uno per creare un elemento e un altro per disegnare una linea. non è possibile utilizzare l'evento click per entrambe le attività poiché il disegno di una linea utilizza indirettamente anche l'evento click. mouseup e mousedown creeranno un conflitto in modo migliore per differenziarli. Ho fatto un po 'la stessa attività su https://github.com/alpesh1988/ETSAssignment .. puoi usarlo come riferimento. fammi sapere se hai dei dubbi –