cavolo! è vero... e come potrei fare allora per inserire un nuovo punto a metà linea per esempio?
edit: forse ho capito... centra il moveto
cavolo! è vero... e come potrei fare allora per inserire un nuovo punto a metà linea per esempio?
edit: forse ho capito... centra il moveto
ho modificato lo script perchè vorrei che la linea non possa tornare indietro nell'asse x, ma aggiungesse nuovi vertici nel mezzo...
quindi io inserisco tutti i punti nell'array, lo ordino, cancello tutte le linee e ridiscegno stando attento sta volta indicare nel moveto la posiozione di arrat[i-1] questa volta, senò me le attacca sempre all'ultimo vertica creato... ma da problemi e non capisco perchè! finchè si creano vertici che vanno in progressione sull'asse x va tutto bene, se si prova a tornare indietro ci son disastri
EDIT: debuggando ho visto che l'ordinamento lo fa bene
mi potete dare un occhio a questo frammento di codice?
che è quello della stampa che potete trovare anche qua ho messo il ctx.stroke(); nel for per vedere bene che succedeva ad ogni ciclo.codice:ctx.clearRect(0,0,300,300); for(j=0;j<=i;j++) { if(j==0) { ctx.moveTo(0,300); } else { ctx.moveTo(arx[j-1],ary[j-1]); } ctx.lineTo(arx[j],ary[j]); ctx.stroke(); }
la variabile i tiene conti del numero di punti correttamente (dal debug) come anche gli array arx e ary vengono ordinati correttamente...
io se inserisco tre punti vedo che la stampa al punto ctx.stroke(); stampa 3 linee di colpo, e dal debug ho visto che ha fatto un solo moveTo e un solo lineTo praticamente appaion come due linee solo che sulla prima ce ne son due una sopra all'altra, ed era vuoto prima, grazie al ctx.clearRect(0,0,300,300); è come se tenesse memoria della linea e la riproponesse con l'aggiunta del lineTo
che può essere?
ma è possibile che ctx.moveTo(0,300); stampi una linea senza moveTo, dal debug pare di si, come se tenesse memoria della linea, io vorrei cancellarla proprio, non avere più traccia della linea e crearne una nuova
perchè ho fatto anche un atro esperimento, ho provato a stampare una retta con moveTo e successivamente con lineTo, poi ho scritto ctx.clearRect(0,0,300,300); e successivamente un altro moveTo e lineTo e ho stampato tutto con stroke, quindi, siccome la prima linea è stata cancellata dal clearRect lo stroke avrebbe dovuto mostrare solo la seconda linea, ma invece le ha mostrate entrambe
perchè cancella la retta, però rimane memorizzata da qualche parte
ho risolto! vi spiego come ho fatto!
ho scritto:
serviva metterecodice:ctx.clearRect(0,0,300,300); ctx.beginPath(); //codice... ctx.closePath();
ctx.beginPath(); e ctx.closePath();