2012-04-28 2 views
1

자바 스크립트에서 배열의 배열로 만든 큐브 격자가 있습니다. 눈금 차원은 변수에 저장됩니다. 따라서 dim은 단일 큐브의 차원입니다. spacing은 각 큐브 사이의 거리입니다 (dimspacing 픽셀로 표시).자바 스크립트 - 그리드를 통해 마우스 클릭을 매핑

이제 항상 g.mouseXg.mouseY 변수에 사용자 마우스 위치를 지정할 수 있다는 것을 고려하면이 코드가 항상 정확한 것은 아닙니다.

var j = Math.round(g.mouseX/(dim+spacing)); 
var i = Math.round(g.mouseY/(dim+spacing)); 

// user clicked on the cell grid[j][i] 

때로는 큐브를 클릭하지만 주변의 사람을 생각하는 것처럼 보입니다. 사용자 클릭의 전체 매핑이 dim의 절반으로 이동 된 것 같습니다. 아마도 Math.round를 사용하면 모든 것이 거의 잘못되었지만 사용자가 클릭 할 때 그리드에서 정확한 좌표로 혼란스럽고 예기치 않은 값을 변환 할 수있는 다른 방법은 없습니다.

누구나 도움을 드릴 수 있습니다.

미리 감사드립니다 ...

답변

1

반올림하지 않고 자르려고합니다.

var j = Math.floor(g.mouseX/(dim+spacing)); 

하지만 실제로는, 왜 단지 각 격자 셀의 onclick 이벤트를 바인딩하지 : 당신은지도 (예를 들어) 3.73에있는 Math.floor을 사용할 수 있습니까?

+0

이것을 시도합니다! 이 셀은 CSS 또는 HTML 요소가 아니기 때문에 onclick을 사용할 수 없습니다. 캔버스에 그리기 때문에 브라우저의 관점에서 볼 때이 셀은 존재하지 않습니다. – Saturnix

+0

Math.floor는 잘 작동합니다! : D – Saturnix

+0

다시 한번 많이 감사합니다! 너의 도움으로 나는 지금 큰 일을하고있다. – Saturnix

관련 문제