Mam obecnie funkcję, która wykrywa kierunek wprowadzania myszy. Zwraca liczbę całkowitą (0-3) dla każdej sekcji, jak pokazano poniżej.Jak wykrywać kierunek myszy na konkretnym elemencie?
Próbuję dowiedzieć się, jak zmienić tę funkcję, aby produkować wyjście oparte na tej ilustracji:
Zasadniczo, po prostu chcę, aby dowiedzieć się, jeśli użytkownik wprowadza obraz z lewej lub z prawej strony. Miałem kilka prób prób i błędów, ale nie jestem zbyt dobry w tego rodzaju matematyce.
Jako przykład ustawiłem JSFiddle with a console output.
Funkcja celu określenia kierunku jest:
function determineDirection($el, pos){
var w = $el.width(),
h = $el.height(),
x = (pos.x - $el.offset().left - (w/2)) * (w > h ? (h/w) : 1),
y = (pos.y - $el.offset().top - (h/2)) * (h > w ? (w/h) : 1);
return Math.round((((Math.atan2(y,x) * (180/Math.PI)) + 180))/90 + 3) % 4;
}
przypadku pos
Przedmiotem: {x: e.pageX, y: e.pageY}
i $el
obiektem jQuery zawierający element docelowy.
Wow, to żenująco proste (Będę przyjąć tak szybko, jak mogę). Oto link do JSFiddle dla innych: http://jsfiddle.net/aBK5Q/2/ – ahren
Troszkę zaskakujący komentarz: wciąż nie jesteś w stanie określić bezpośredniego kierunku ruchu myszy. Po prostu określasz, w której połowie twojej grafiki przybywa twój kursor. Jeśli więc szybko poruszysz myszką, możesz wprowadzić grafikę od lewej strony, ale kończysz w prawej połowie. Jeśli chcesz poradzić sobie z tym zachowaniem, prawdopodobnie będziesz musiał zapisać współrzędne myszy przy każdym przesunięciu myszy i porównać ostatnie współrzędne ze współrzędnymi zaraz po zdarzeniu myszy. Ale myślę, że powyższa odpowiedź działa dobrze na prawdopodobnie w prawdziwych przypadkach życia. – basilikum