HTML5 캔버스를 사용하여 원의 어느 부분을 클릭했는지 확인하는 방법은 무엇입니까?

M00

HTML5 캔버스와 바닐라 자바 ​​스크립트를 사용하여 Simon 게임을 만들려고합니다. arc () 메서드의 좌표계에 대해 혼란 스럽습니다. 원을 4 사분면으로 나누었으며 클릭 한 사분면의 수를 알리고 싶습니다. 그러나 원의 어느 부분을 클릭했는지 알아내는 방법을 모르겠습니다. https://jsfiddle.net/xawpLdys/1/

var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
var x = canvas.width / 2;
var y = canvas.height / 2;

var pads = [];

var angle = 2 * Math.PI / 4;
var color = ["green","red","blue","yellow"];
var Pads = function(x, y, radius, start, end) {
   this.x = x;
   this.y = y;
   this.radius = radius;
   this.start = start;
   this.end = end;

};
function drawSimon(radius) {
for (var i = 0; i < 4; i++) {
    context.beginPath();
    context.moveTo(x, y);
    context.arc(x, y, radius, i*angle, (i+1)*angle, false);
    context.lineWidth = radius;
    context.fillStyle = color[i];
    context.fill();
    context.lineWidth = 2;
    context.strokeStyle = '#444';
    context.stroke();
    var pad = new Pads(x, y, radius, i*angle, (i+1)*angle);
    pads.push(pad);
}

}

 drawSimon(150);

  $('#myCanvas').click(function (e) {

  /*for (var i = 0; i < pads.length; i++) {
    if (//condition matches) {
        alert (i);
    }
   }*/
  });
Md. Khairul Hasan |

이 시도

이 예제는 클릭 된 변환 e.pageXe.pageY수직 사분면 시스템. 그리고 어떤 조건 후에 어떤 부분이 클릭되었는지 확인할 수 있습니다.

    $('#myCanvas').click(function (e) {
    var nx,ny;
    nx=-(x- e.pageX);
    ny=y- e.pageY;
        if (nx>0 && ny>0){
      alert('Yellow');
      }else if (nx<0 && ny>0){
      alert('Blue');
      }else if (nx>0 && ny<0){
      alert('Green');
      }else if (nx<0 && ny<0){
      alert('Red');
      }
      
    });

다음은 바이올린입니다 https://jsfiddle.net/xawpLdys/3/

최신 정보

John S옳았습니다 (원 밖에있는 클릭 수를 계산합니다). 원 외부의 클릭이 고려되지 않도록하려면 원의 중심과 클릭 된 점으로부터의 거리를 찾아야합니다. 그런 다음 거리를 원의 반경과 비교하여 반경 내부에 있는지 확인합니다.

업데이트 된 코드 :

    $('#myCanvas').click(function (e) {
    var nx,ny;
    nx=-(x- e.pageX);
    ny=y- e.pageY;
     var dx = Math.abs(Math.abs(x)-Math.abs(e.pageX));
     var dy = Math.abs(Math.abs(y)-Math.abs(e.pageY));
     var distance_clicked = Math.sqrt((dx*dx)+(dy*dy));
     if(distance_clicked <= radius){
        if (nx>0 && ny>0){
          alert('Yellow');
          }else if (nx<0 && ny>0){
          alert('Blue');
          }else if (nx>0 && ny<0){
          alert('Green');
          }else if (nx<0 && ny<0){
          alert('Red');
          }
    }
    });

다음은 업데이트 된 바이올린입니다 https://jsfiddle.net/xawpLdys/8/

원을 4 조각 이상으로 나누는 데는 여전히 한계가 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

HTML5 캔버스를 사용하여 다단계 원형 차트를 그리는 방법은 무엇입니까?

분류에서Dev

클릭으로 또는 react.js의 Enter 또는 Space 키로 버튼을 클릭했는지 확인하는 방법은 무엇입니까?

분류에서Dev

CSS를 사용하여 HTML5 캔버스에 색상을 지정하는 방법이 있습니까?

분류에서Dev

캔버스 HTML5에서 ontouch 이벤트를 사용하는 방법은 무엇입니까?

분류에서Dev

클릭 가능한 캔버스를 사용하여 비트 맵을 만드는 방법은 무엇입니까?

분류에서Dev

html의 캔버스 태그를 단어 파일로 변환하는 방법은 무엇입니까?

분류에서Dev

HTML5 캔버스의 이미지에 '곱하기'색조를 올바르게 적용하는 방법은 무엇입니까?

분류에서Dev

내 그림을 HTML5 캔버스 내에서 이동하는 방법은 무엇입니까?

분류에서Dev

d3.js를 사용하여 캔버스의 왼쪽 부분에있는 텍스트를 가로로 뒤집는 방법은 무엇입니까?

분류에서Dev

html5 캔버스를 배경으로 사용하여 CSS를 사용하여 YouTube 삽입을 그 위에 배치하여 해상도에 독립적이되도록하는 방법은 무엇입니까?

분류에서Dev

HTML5 캔버스를 사용하여 도로 선을 만드는 방법

분류에서Dev

Rails spree : deface를 사용하여 로그인 부분을 재정의하는 방법은 무엇입니까?

분류에서Dev

Selenium xpath를 사용하여 일부 텍스트 앞에 나타나는 두 개의 확인란을 클릭하는 방법은 무엇입니까?

분류에서Dev

Netty4의 어느 채널에서 Bytebuf를 읽었는지 확인하는 방법은 무엇입니까?

분류에서Dev

HTML5 캔버스를 사용하여 오프셋으로 최종 점 좌표를 계산하는 방법은 무엇입니까?

분류에서Dev

HTML5 Canvas 및 three.js를 사용하여 4 점 원근 변환을 구현하는 방법은 무엇입니까?

분류에서Dev

Jquery를 사용하여 html 테이블의 특정 열에있는 셀이 비어 있는지 확인하는 방법은 무엇입니까?

분류에서Dev

javascript / jquery를 사용하여 3 개의 캔버스 HTML 요소를 하나의 이미지 파일로 결합하는 방법은 무엇입니까?

분류에서Dev

사용되는 HTML 버전을 확인하는 방법은 무엇입니까?

분류에서Dev

JavaScript를 사용하여 캔버스 끝을 칠 때 개체를 중지하는 방법은 무엇입니까?

분류에서Dev

Android 캔버스에 부분 원형 사각형을 그리는 방법은 무엇입니까?

분류에서Dev

클래스를 사용하여 tkinter 캔버스에 다각형을 그리는 방법은 무엇입니까?

분류에서Dev

html / html5에서 사용자 입력을 사용하여 전체 지리적 위치 세부 정보를 얻는 방법은 무엇입니까?

분류에서Dev

Android에서 버튼을 클릭했는지 여부를 설정하는 방법은 무엇입니까?

분류에서Dev

HTML 캔버스에서 원하지 않는 줄을 삭제하는 방법은 무엇입니까?

분류에서Dev

jQuery를 사용하여 단일 이미지의 다른 부분을 fadeOut ()하는 방법은 무엇입니까?

분류에서Dev

JS를 사용하여 캔버스에서 캐릭터의 일부를 그리는 방법은 무엇입니까?

분류에서Dev

Safari iOS의 HTML5 캔버스에서 이모티콘 크기를 조정하는 방법은 무엇입니까?

분류에서Dev

버튼 클릭 여부를 확인하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    HTML5 캔버스를 사용하여 다단계 원형 차트를 그리는 방법은 무엇입니까?

  2. 2

    클릭으로 또는 react.js의 Enter 또는 Space 키로 버튼을 클릭했는지 확인하는 방법은 무엇입니까?

  3. 3

    CSS를 사용하여 HTML5 캔버스에 색상을 지정하는 방법이 있습니까?

  4. 4

    캔버스 HTML5에서 ontouch 이벤트를 사용하는 방법은 무엇입니까?

  5. 5

    클릭 가능한 캔버스를 사용하여 비트 맵을 만드는 방법은 무엇입니까?

  6. 6

    html의 캔버스 태그를 단어 파일로 변환하는 방법은 무엇입니까?

  7. 7

    HTML5 캔버스의 이미지에 '곱하기'색조를 올바르게 적용하는 방법은 무엇입니까?

  8. 8

    내 그림을 HTML5 캔버스 내에서 이동하는 방법은 무엇입니까?

  9. 9

    d3.js를 사용하여 캔버스의 왼쪽 부분에있는 텍스트를 가로로 뒤집는 방법은 무엇입니까?

  10. 10

    html5 캔버스를 배경으로 사용하여 CSS를 사용하여 YouTube 삽입을 그 위에 배치하여 해상도에 독립적이되도록하는 방법은 무엇입니까?

  11. 11

    HTML5 캔버스를 사용하여 도로 선을 만드는 방법

  12. 12

    Rails spree : deface를 사용하여 로그인 부분을 재정의하는 방법은 무엇입니까?

  13. 13

    Selenium xpath를 사용하여 일부 텍스트 앞에 나타나는 두 개의 확인란을 클릭하는 방법은 무엇입니까?

  14. 14

    Netty4의 어느 채널에서 Bytebuf를 읽었는지 확인하는 방법은 무엇입니까?

  15. 15

    HTML5 캔버스를 사용하여 오프셋으로 최종 점 좌표를 계산하는 방법은 무엇입니까?

  16. 16

    HTML5 Canvas 및 three.js를 사용하여 4 점 원근 변환을 구현하는 방법은 무엇입니까?

  17. 17

    Jquery를 사용하여 html 테이블의 특정 열에있는 셀이 비어 있는지 확인하는 방법은 무엇입니까?

  18. 18

    javascript / jquery를 사용하여 3 개의 캔버스 HTML 요소를 하나의 이미지 파일로 결합하는 방법은 무엇입니까?

  19. 19

    사용되는 HTML 버전을 확인하는 방법은 무엇입니까?

  20. 20

    JavaScript를 사용하여 캔버스 끝을 칠 때 개체를 중지하는 방법은 무엇입니까?

  21. 21

    Android 캔버스에 부분 원형 사각형을 그리는 방법은 무엇입니까?

  22. 22

    클래스를 사용하여 tkinter 캔버스에 다각형을 그리는 방법은 무엇입니까?

  23. 23

    html / html5에서 사용자 입력을 사용하여 전체 지리적 위치 세부 정보를 얻는 방법은 무엇입니까?

  24. 24

    Android에서 버튼을 클릭했는지 여부를 설정하는 방법은 무엇입니까?

  25. 25

    HTML 캔버스에서 원하지 않는 줄을 삭제하는 방법은 무엇입니까?

  26. 26

    jQuery를 사용하여 단일 이미지의 다른 부분을 fadeOut ()하는 방법은 무엇입니까?

  27. 27

    JS를 사용하여 캔버스에서 캐릭터의 일부를 그리는 방법은 무엇입니까?

  28. 28

    Safari iOS의 HTML5 캔버스에서 이모티콘 크기를 조정하는 방법은 무엇입니까?

  29. 29

    버튼 클릭 여부를 확인하는 방법은 무엇입니까?

뜨겁다태그

보관