sto usando KinectJS per disegnare linee sulla base di movimento del mouse. Quando un utente tiene premuto il pulsante del mouse, io voglio che sia il punto di 'start' della linea, e quando il rilascio utente, sarà la 'fine' della linea, ma come stanno tenendo il mouse verso il basso che voglio essere in grado di ridisegnare dinamicamente la linea mentre il mio mouse si muove. È possibile?KineticJS - Disegno di linee con il mouse
5
A
risposta
13
Sì, la sua possibile.
Fondamentalmente, è necessario ridisegnare il livello durante l'evento onMouseMove. Avrai bisogno di una bandiera per controllare quando la linea è in movimento o meno.
Quando lo script viene inizializzato, questo flag deve essere falso.
In OnMouseDown, l'inizio della linea dovrebbe ricevere le coordinate del mouse correnti e impostare il flag su true.
Su onMouseMouve, se il flag è true, è necessario aggiornare la fine della riga per ricevere le coordinate del mouse correnti.
In onMouseUp, il flag deve essere impostato su false.
vedere l'esempio di seguito:
<!DOCTYPE HTML>
<html>
<head>
<style>
body {
margin: 0px;
padding: 0px;
}
canvas {
border: 1px solid #9C9898;
}
</style>
<script src="http://www.html5canvastutorials.com/libraries/kinetic-v4.0.1.js"></script>
<script>
window.onload = function() {
layer = new Kinetic.Layer();
stage = new Kinetic.Stage({
container: "container",
width: 320,
height: 320
});
background = new Kinetic.Rect({
x: 0,
y: 0,
width: stage.getWidth(),
height: stage.getHeight(),
fill: "white"
});
line = new Kinetic.Line({
points: [0, 0, 50, 50],
stroke: "red"
});
layer.add(background);
layer.add(line);
stage.add(layer);
moving = false;
stage.on("mousedown", function(){
if (moving){
moving = false;layer.draw();
} else {
var mousePos = stage.getMousePosition();
//start point and end point are the same
line.getPoints()[0].x = mousePos.x;
line.getPoints()[0].y = mousePos.y;
line.getPoints()[1].x = mousePos.x;
line.getPoints()[1].y = mousePos.y;
moving = true;
layer.drawScene();
}
});
stage.on("mousemove", function(){
if (moving) {
var mousePos = stage.getMousePosition();
var x = mousePos.x;
var y = mousePos.y;
line.getPoints()[1].x = mousePos.x;
line.getPoints()[1].y = mousePos.y;
moving = true;
layer.drawScene();
}
});
stage.on("mouseup", function(){
moving = false;
});
};
</script>
</head>
<body>
<div id="container" ></div>
</body>
</html>
Problemi correlati
- 1. Disegno interattivo con kineticjs
- 2. Disegno di archi perfettamente circolari con HTML5 Canvas + KineticJS
- 3. Disegno di linee con opengl in Haskell
- 4. Disegno di linee non continue con d3
- 5. Qual è la differenza tra i metodi di disegno KineticJS?
- 6. Il disegno con il mouse causa spazi tra i pixel
- 7. Disegno linee tratteggiate con OpenGL-ES
- 8. Linee di disegno con Algoritmo della linea di Bresenham
- 9. Disegno di linee diagonali attraverso un'immagine
- 10. Disegno fisso di linee di griglia con opencv
- 11. Disegno di linee tra coppie in Python
- 12. Disegno di linee 3D in WPF
- 13. Disegno di linee angolate nei CSS
- 14. Disegno di un rettangolo con linee tratteggiate utilizzando Rafael.js
- 15. Evento mouse GTK # nell'area di disegno
- 16. grafico interattivo matplotlib (disegno manuale di linee su un grafico)
- 17. Disegno di un singolo grafico a linee di Google con più linee utilizzando JSON
- 18. Disegno Linee tratteggiate su tela HTML5?
- 19. WPF - Disegno su tela con eventi del mouse
- 20. Disegno di linee con alias da 1 pixel di spessore in tempo reale
- 21. Scaling ad un punto fisso nel KineticJS
- 22. Disegno di linee tra due trame in Matplotlib
- 23. Kineticjs vs Raphaeljs
- 24. Disegno di linee curve tra i punti in ggmap
- 25. Comprensione del layer Canvas & KineticJS
- 26. Disegno di linee con larghezza di riga variabile in continuo su tela HTML
- 27. Diagramma a linee di ChartJs ridisegnare il glitch mentre si passa il mouse su
- 28. Zoom e panoramica in KineticJS
- 29. Come salvare e caricare le linee del disegno iphone SDK
- 30. La griglia di disegno con jQuery SVG produce linee 2px invece di 1px
c'è un modo per disegnare linee multiple e non sostituendo la stessa linea? – Mike
@TrustWeb sicuro che sia. Basta creare una nuova forma su ogni mousedown –
Ecco un JSFiddle della risposta per comodità: http://jsfiddle.net/nSSTS/ –