나는이 작업을하지 못했지만 몇 분 후에 방금 셀을 계산해야한다고 생각한다.
데모를 실행하면 (여기에 누군가 http://qwan.org/scroller/demo/으로 공개적으로 호스팅 됨) 캔버스 버전이 DOM 기반 옵션과 다르다는 것을 알 수 있습니다. DOM 기반 옵션은 실제로 div
요소를 사용하므로 클래스 및/또는 ID를 사용하여 셀을 쉽게 선택할 수 있습니다. 캔버스 버전은 하나의 큰 캔버스를 사용하는 것으로 보입니다.
데모 페이지에는 가로 및 세로 간격 띄우기에 영향을주는 현재 스크롤 값이 표시됩니다. 당신은 그것을 잡아서 부모 컨테이너 내에서 클릭 한 위치뿐만 아니라 각 셀의 너비와 높이를 결합하여 클릭 한 셀을 결정할 수 있어야합니다. 예를 들면 다음과 같습니다.
var x_cell = Math.floor((scroll_x + click_x)/cell_width);
var y_cell = Math.floor((scroll_y + click_y)/cell_height);
그러나 실제로이 셀에서 캔버스의 픽셀을 쿼리 할 수는 없습니다. 이 API의 셀은 실제로 캔버스 구조의 일부가 아닌 추상적 개념으로 보입니다 (즉, 작은 캔버스 요소가 많지 않음). 따라서 셀 좌표를 사용하여 getImageData()
을 사용할 수있는 캔버스 영역을 결정할 수 있습니다. 이것은 매우 간단하며 context.getImageData(x_cell * cell_width, y_cell * cell_height, cell_width, cell_height);
일 것입니다.
귀하의 통찰력있는 답변을 주셔서 감사합니다. 직접 계산을 수행하는 방법에 대해 자세히 알아 보겠습니다. 당신 말이 맞아요.이게 더 낮은 수준으로 보입니다. 어쩌면 먼저 그 위에 더 많이 만들 필요가 있습니다. – ewakened