2012-10-05 13 views
5

Wiem, że pytania dotyczące współrzędnych svg myszy zostały tu wcześniej zadane, ale jestem dość zaintrygowany obecnym zachowaniem, którego doświadczam i żaden z wątków nie wydaje się do niego pasować.SVG Przechwytując współrzędne myszy

Sposób używam do przechwytywania współrzędnych:

var pt = svg.createSVGPoint(); // Created once for document 

function alert_coords(evt) { 
    pt.x = evt.clientX; 
    pt.y = evt.clientY; 

    // The cursor point, translated into svg coordinates 
    var cursorpt = pt.matrixTransform(svg.getScreenCTM().inverse()); 
    console.log("(" + cursorpt.x + ", " + cursorpt.y + ")"); 
} 

Problem jest z konwersji przyciskiem myszy współrzędnych do SVG współrzędne w przestrzeni użytkownika. Używam współrzędnych do przeciągania prostokąta po ekranie, a gdy kursor przesuwa się dalej w prawo w przestrzeni svg, współrzędne stają się coraz bardziej wypaczone. Aby przetestować to w prosty sposób, umieściłem trzy prostokąty w globalnej przestrzeni svg w (100, 500), (500, 500), (1000, 500) i (1000, 200). Za pomocą prostej funkcji rejestrowania współrzędne, które otrzymuję (plus minus 5 dla niedokładności myszy) wynoszą (98, 473), (487, 470), (969, 471), (969, 190). Jak widać dalej wzdłuż osi x lub y myszy, tym bardziej staje się ona niedokładna. Próbowałem replikować to w skrzypcach, używając tej samej metody do przechwytywania współrzędnych myszy, ale nie mogę jej tam powtórzyć ... Jeszcze jedną rzeczą, która może być znacząca, jest to, że kiedy loguję dokument svg, szerokość a wysokość jest ustawiona na wartości nieco niższe niż wartości w polu widzenia, tj. 1380 szerokość i 676 wysokość przy wartości pola widzenia "0 0 1400 700". W każdym razie, tutaj jest skrzypce, wszystkie właściwości svg są takie same jak w moim programie.

http://jsfiddle.net/ASLma/11/

Odpowiedz

2

Wydaje się, że problem został otwarciu SVG bezpośrednio w przeglądarce. Zamiast tego umieściłem go na stronie html za pomocą tagu embed i działa świetnie. Nie jestem pewien, dlaczego miałoby to znaczenie z punktu widzenia mojej dokładności współrzędnych myszy, ale rozwiązanie jest rozwiązaniem.

Powiązane problemy