자바 스크립트를 사용하여 움직이는 HTML5 Canvas 요소 복제 및 클릭

아메 치

동일한 속성을 사용하여 캔버스 요소를 클릭 할 수있게 만들고 클릭 할 때 요소를 복제하는 방법을 알아 내야합니다. 논리를 통해 공을 찾고 공의 반경과 좌표를 가리키고 복제 생성자 / 시제품을 만드는 데 몇 가지 트릭을 시도했지만 아무 소용이 없습니다! 도와 주셔서 감사합니다!

아래 코드 :

    <style type="text/css">
        body {
            margin: 0;
            padding: 0;
            overflow: hidden;
        }

        #balling {
            border:1px solid rgb(0,0,0);
        }

    </style>
</head>
<body>

    <canvas id="balling" width="500" height="400"></canvas>



    <!-- Javascript on the bottom to make page run faster -->
    <script type="text/javascript" src="js/lib/jquery.js"></script>
    <script type="text/javascript">

        var canvas = document.getElementById('balling');
        var context = canvas.getContext('2d');

        // The Properties of the Circle and Position within the Viewport
        var CircleOptions = {
        posBall: {
            x: 160, 
            y: 180
        },
            radius: 40,
            startAngle: 0, 
            endAngle: Math.PI * 2, 
            anticlockwise: false,
            radians: 0,
            xMove: Math.random(),
            yMove: Math.random(),
            speed:2,
            angle:80,
            velocityX:1,
            velocityY:1
        }; 

        //Math to make the ball move
        function moveBall() {
            CircleOptions.radians = CircleOptions.angle * Math.PI/180;
            CircleOptions.xMove = Math.cos(CircleOptions.radians) * CircleOptions.speed * CircleOptions.velocityX;
            CircleOptions.yMove = Math.sin(CircleOptions.radians) * CircleOptions.speed * CircleOptions.velocityY;
        }

        //Function to draw the ball
        function DrawOptions() {
        //Reset Canvas
            context.fillStyle = "white";
            context.fillRect(0, 0, canvas.width, canvas.height);

        //Drawing of the ball
            context.fillStyle = "rgb(142, 68, 173)";
            context.beginPath();
            context.arc(CircleOptions.posBall.x, CircleOptions.posBall.y, CircleOptions.radius, CircleOptions.startAngle, CircleOptions.endAngle, CircleOptions.anticlockwise);
            context.closePath();
            context.fill(); 


            }

        //finding the coordinates of the circle
        function CircleCoordinates(CircleOptions) {
            var left = CircleOptions.posBall.x - CircleOptions.radius,
            top = CircleOptions.posBall.y + CircleOptions.radius,
            right = CircleOptions.posBall.x + CircleOptions.radius,
            bottom = CircleOptions.posBall.y - CircleOptions.radius;
        }

        // Animate and call the function to move the ball
        setInterval(Move, 20);

        //Function call for the ball
        moveBall();

        //The function to make it move, reset canvas for movement and color/create shape of ball
        function Move() {
            //Function call for drawing and pinpointing the coordinates
            DrawOptions();
            CircleCoordinates(CircleOptions);


            //Power to make it move
            CircleOptions.posBall.x += CircleOptions.xMove;
            CircleOptions.posBall.y += CircleOptions.yMove; 

            //checks for ball hitting the Wall
            if(CircleOptions.posBall.x > canvas.width || CircleOptions.posBall.x < 0) {
                CircleOptions.angle -= 770;
                moveBall();
            } else if(CircleOptions.posBall.y > canvas.height || CircleOptions.posBall.y < 0) {
                CircleOptions.angle -= 2760;
                moveBall();
            } else if(CircleOptions.posBall.y == canvas.height || CircleOptions.posBall.y > canvas.width) {
                CircleOptions.angle += 90;
                moveBall();
            }
        }

        $('#balling').on('click', function(e) {
            var clickedX = e.pageX - this.offsetLeft;
            var clickedY = e.pageY - this.offsetTop;

            if (clickedX > CircleOptions.right && clickedX > CircleOptions.left && clickedY > CircleOptions.top && clickedY < CircleOptions.bottom) {
                alert ('clicked number ');
            }
        }); 

        //Clone prototype and constructor
        function Clone() {
            Clone.prototype = CircleOptions;
            var c = new Clone();
            if(CircleOptions.posBall.x < canvas.width || CircleOptions.posBall.y == canvas.height) {
                return c;
            }

        }

        //function call for clone
        Clone();




    </script>
</body>

라이브 코드를 볼 수있는 바이올린 링크 : http://jsfiddle.net/coder101/CMW24/

렉사 스

DOM 노드를 복제하려면 cloneNode를 사용하십시오 . 코드 디버깅을 위해 jsfiddle을 사용하면 커뮤니티에서 클릭 문제를 발견하는 데 도움이 될 수 있습니다.

코드에 버그가 거의 없었습니다. 수정 된 버전 :

function CircleCoordinates() {
    CircleOptions.left = CircleOptions.posBall.x - CircleOptions.radius,
    CircleOptions.right = CircleOptions.posBall.x + CircleOptions.radius,
    CircleOptions.top = CircleOptions.posBall.y - CircleOptions.radius,
    CircleOptions.bottom = CircleOptions.posBall.y + CircleOptions.radius;
}

...

canvas.addEventListener('click', function (e) {
    var clickedX = e.pageX - this.offsetLeft;
    var clickedY = e.pageY - this.offsetTop;

    if (clickedX < CircleOptions.right && clickedX > CircleOptions.left && clickedY > CircleOptions.top && clickedY < CircleOptions.bottom) {
        alert('clicked number ');
    }
});

(왜 jQuery가 필요합니까?)

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

자바 스크립트로 텍스트를 클릭하여 테이블의 <td> 요소 텍스트 복사

분류에서Dev

자바 스크립트를 사용하여 값이있는 HTML 요소 제거

분류에서Dev

자바 스크립트를 사용하여 클릭에 HTML의 DIV를 제거하는 방법

분류에서Dev

클릭시 자바 스크립트로 HTML 요소 제거

분류에서Dev

HTML 목록 요소를 클릭하여 자바 스크립트 함수 호출

분류에서Dev

자바 스크립트를 사용하여 동적 요소 문제가있는 html div 추가

분류에서Dev

자바 스크립트 및 / 또는 CSS로 사용자가 요소를 클릭하도록 할 수 있습니까?

분류에서Dev

자바 스크립트를 사용하여 요소 외부를 클릭 할 때 선택 요소로 작동하는 div의 동작을 어떻게 복제합니까?

분류에서Dev

텍스트 자바 스크립트를 복사하려면 클릭하세요.

분류에서Dev

자바 스크립트를 사용하여 두 HTML 요소의 높이 일치

분류에서Dev

자바 스크립트 및 jquery를 사용하여 중복 XML 요소를 문자열 배열로 읽기

분류에서Dev

자바 스크립트를 사용하여 클릭 이벤트를 HTML 형식으로 저장하는 방법

분류에서Dev

자바 스크립트 콜백 핸들러를 사용하여 데이터 클릭 및 교체

분류에서Dev

자바 스크립트 및 HTML5 캔버스를 사용하는 게임 앱의 배경

분류에서Dev

태그 이름 자바 스크립트를 사용하여 요소에서 사용자 클릭을 감지하는 방법은 무엇입니까?

분류에서Dev

요청 및 buetifulsoup을 사용하여 자바 스크립트 요소를 긁어내는 방법

분류에서Dev

HTML 캔버스의 자바 스크립트에서 움직이는 공 복제

분류에서Dev

자바 스크립트를 사용하여 양식 내 일부 요소 숨기기 해제 및 숨기기

분류에서Dev

자바 스크립트를 사용하여 DIV 요소 이동

분류에서Dev

자바 스크립트 루프를 사용하여 반복 할 때 각 HTML 요소에 대해 함수를 호출 할 수있는 방법이 있습니까?

분류에서Dev

자바 스크립트를 사용하여 이탤릭체의 <em> 요소를 제거해야합니다. 코드보기

분류에서Dev

유성 / 자바 스크립트에서 비활성화 된 HTML 요소에서 마우스 클릭 이벤트를 비활성화하는 방법

분류에서Dev

자바 스크립트를 사용하여 HTML DOM 요소에서 문자열을 찾고 바꾸는 방법

분류에서Dev

자바 스크립트 만 사용하여 html 요소 정렬 문제

분류에서Dev

자바 스크립트의 여러 요소 클릭 이벤트-jQuery와 같은

분류에서Dev

자바 스크립트 또는 jquery를 사용하여 2 개의 다른 요소 숨기기 및 표시

분류에서Dev

자바 스크립트를 사용하여 요소 CSS 클래스 런타임을 변경하는 방법

분류에서Dev

자바 스크립트에서 다른 클래스를 사용하여 HTML 요소를 숨기는 방법은 무엇입니까?

분류에서Dev

자바 스크립트의 div에 텍스트와 함께 움직이는 요소를 추가하는 방법

Related 관련 기사

  1. 1

    자바 스크립트로 텍스트를 클릭하여 테이블의 <td> 요소 텍스트 복사

  2. 2

    자바 스크립트를 사용하여 값이있는 HTML 요소 제거

  3. 3

    자바 스크립트를 사용하여 클릭에 HTML의 DIV를 제거하는 방법

  4. 4

    클릭시 자바 스크립트로 HTML 요소 제거

  5. 5

    HTML 목록 요소를 클릭하여 자바 스크립트 함수 호출

  6. 6

    자바 스크립트를 사용하여 동적 요소 문제가있는 html div 추가

  7. 7

    자바 스크립트 및 / 또는 CSS로 사용자가 요소를 클릭하도록 할 수 있습니까?

  8. 8

    자바 스크립트를 사용하여 요소 외부를 클릭 할 때 선택 요소로 작동하는 div의 동작을 어떻게 복제합니까?

  9. 9

    텍스트 자바 스크립트를 복사하려면 클릭하세요.

  10. 10

    자바 스크립트를 사용하여 두 HTML 요소의 높이 일치

  11. 11

    자바 스크립트 및 jquery를 사용하여 중복 XML 요소를 문자열 배열로 읽기

  12. 12

    자바 스크립트를 사용하여 클릭 이벤트를 HTML 형식으로 저장하는 방법

  13. 13

    자바 스크립트 콜백 핸들러를 사용하여 데이터 클릭 및 교체

  14. 14

    자바 스크립트 및 HTML5 캔버스를 사용하는 게임 앱의 배경

  15. 15

    태그 이름 자바 스크립트를 사용하여 요소에서 사용자 클릭을 감지하는 방법은 무엇입니까?

  16. 16

    요청 및 buetifulsoup을 사용하여 자바 스크립트 요소를 긁어내는 방법

  17. 17

    HTML 캔버스의 자바 스크립트에서 움직이는 공 복제

  18. 18

    자바 스크립트를 사용하여 양식 내 일부 요소 숨기기 해제 및 숨기기

  19. 19

    자바 스크립트를 사용하여 DIV 요소 이동

  20. 20

    자바 스크립트 루프를 사용하여 반복 할 때 각 HTML 요소에 대해 함수를 호출 할 수있는 방법이 있습니까?

  21. 21

    자바 스크립트를 사용하여 이탤릭체의 <em> 요소를 제거해야합니다. 코드보기

  22. 22

    유성 / 자바 스크립트에서 비활성화 된 HTML 요소에서 마우스 클릭 이벤트를 비활성화하는 방법

  23. 23

    자바 스크립트를 사용하여 HTML DOM 요소에서 문자열을 찾고 바꾸는 방법

  24. 24

    자바 스크립트 만 사용하여 html 요소 정렬 문제

  25. 25

    자바 스크립트의 여러 요소 클릭 이벤트-jQuery와 같은

  26. 26

    자바 스크립트 또는 jquery를 사용하여 2 개의 다른 요소 숨기기 및 표시

  27. 27

    자바 스크립트를 사용하여 요소 CSS 클래스 런타임을 변경하는 방법

  28. 28

    자바 스크립트에서 다른 클래스를 사용하여 HTML 요소를 숨기는 방법은 무엇입니까?

  29. 29

    자바 스크립트의 div에 텍스트와 함께 움직이는 요소를 추가하는 방법

뜨겁다태그

보관