2011-10-05 11 views
6

Ho bisogno di recuperare la coordinata X/Y della fine di un tracciato disegnato in Raffaello. Ho trovato un modo che funziona introspettando il percorso in seguito nei browser SVG ma questo approccio non funziona nei browser VML.X/Y posizione del punto finale del percorso in Raphael

Esempio:

var paper = Raphael('canvas', 200, 200); 
var p = paper.path(['M', 10, 10, 'l', 30, 30, 'a', 20, 30, 0, 1, 0, 40, 10, 'a', 20, 30, 0, 1, 0, 40, 10, 'l', -15, -18]); 
var lastP = p.attrs.path[p.attrs.path.length - 1]; 
paper.circle(lastP[lastP.length - 2], lastP[lastP.length - 1], 3); 

http://jsfiddle.net/sY4Up/1/

In Chrome, un cerchio viene disegnato al punto finale attraverso il percorso di introspezione. In IE 6/7/8, il cerchio non disegna perché la definizione del percorso non viene decomposta/normalizzata.

risposta

8

utilizzare getPointAtLength e getTotalLength per trovare la posizione.

window.onload = function() { 
var paper = Raphael('canvas', 200, 200); 
var p = paper.path(['M', 10, 10, 'l', 30, 30, 'a', 20, 30, 0, 1, 0, 40, 10, 'a', 20, 30, 0, 1, 0, 40, 10, 'l', -15, -18]); 
var lastP = p.attrs.path[p.attrs.path.length - 1]; 
paper.circle(lastP[lastP.length - 2], lastP[lastP.length - 1], 3); 

var pt = p.getPointAtLength(p.getTotalLength()); 
paper.circle(pt.x,pt.y,10); 

};

+0

Semplice ed elegante. Grazie! – bjaxbjax

Problemi correlati