이 사각형이 특정 값에 도달 한 후 어떻게 방향을 바꿀 수 있습니까?

mechsec 기술

빨간색 사각형이 루프에서 약간 앞뒤로 움직이는 유휴 애니메이션을 만들려고합니다. 어떤 이유로 든 반대 방향으로 이동하는 대신 지정된 임계 값에 도달하면 중지됩니다.

내가 뭘 잘못 했어?

<canvas id="myCanvas" width="1500" height="500" style="border:1px solid #c3c3c3;">
        Your browser does not support the canvas element.
    </canvas>

    <script>
        var canvas = document.getElementById("myCanvas");
        var ctx = canvas.getContext("2d");

        // Spaceship structure 
        var shipWidth = 250;
        var shipHeight = 100;

        // Canvas parameters
        var cWidth = canvas.width;
        var cHeight = canvas.height;

        // Positioning variables 
        var centerWidthPosition = (cWidth / 2) - (shipWidth / 2);
        var centerHeightPosition = (cHeight / 2) - (shipHeight / 2);

        var requestAnimationFrame = window.requestAnimationFrame || 
                                    window.mozRequestAnimationFrame || 
                                    window.webkitRequestAnimationFrame || 
                                    window.msRequestAnimationFrame;
        function drawShip(){
            ctx.clearRect(0, 0, cWidth, cHeight);
            ctx.fillStyle = "#FF0000";
            ctx.fillRect(centerWidthPosition,centerHeightPosition,shipWidth,shipHeight);

                centerWidthPosition--;
                if (centerWidthPosition < 400){
                    ++centerWidthPosition;
                }

            requestAnimationFrame(drawShip);
        }
        drawShip();

    </script>



ThisClark

@TheAmberlamps가 그 이유를 설명했습니다. 여기서 저는 당신이하려는 일을 성취 할 수있는 해결책을 제공합니다.

크기를 변경하는 속도 변수를 사용하십시오. X 위치는 항상 속도 값만큼 증가합니다. 속도는 화면 가장자리에서 방향을 변경합니다.

// use a velocity variable
var xspeed = 1;

// always increase by velocity
centerWidthPosition += xspeed; 

// screen edges are 0 and 400 in this example
if (centerWidthPosition > 400 || centerWidthPosition < 0){ 
    xspeed *= -1; // change velocity direction
}

개체가 앞뒤로 튀는 경우에 다른 조건을 추가했습니다. || 이후 선택을 제거하십시오. 그렇게하고 싶지 않다면.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

최근 연도에 특정 값이있는 경우 각 그룹에 대해 이전 연도의 값을 어떻게 바꿀 수 있습니까?

분류에서Dev

HTML-페이지의 특정 섹션에 도달 한 후 내 navbar를 어떻게 "고정"할 수 있습니까?

분류에서Dev

파이썬에서 데이터 프레임의 특정 값을 열 평균으로 어떻게 바꿀 수 있습니까?

분류에서Dev

이 C ++ 코드 조각은 어떻게 임의의 유형을 고유 한 정수로 바꿀 수 있습니까?

분류에서Dev

지도 확대 / 축소에서 레이어 가시성을 어떻게 바꿀 수 있습니까?

분류에서Dev

이 가격 슬라이더를이 PHP 페이지에서 간단한 HTML 선택으로 어떻게 바꿀 수 있습니까? 선택 옵션이 두 가지 값 (최소 및 최대 가격)을 전달할 수 있습니까?

분류에서Dev

PHP : 특정 데이터를 어떻게 바꿀 수 있습니까?

분류에서Dev

사용자에게 권한이 있어도 SFTP를 통해 파일 이름을 바꿀 수 없습니다.

분류에서Dev

R에서 두 데이터 프레임 사이의 값을 어떻게 찾고 바꿀 수 있습니까?

분류에서Dev

evince에서 북마크의 이름을 어떻게 바꿀 수 있습니까?

분류에서Dev

특정 값을 삽입하여 각 행에서 NULL이 아닌 첫 번째 값을 바꿀 수 있습니까?

분류에서Dev

체인 정규식 (notepad ++)에서이 표현식을 어떻게 바꿀 수 있습니까?

분류에서Dev

파이 게임에서 직사각형에 고유 한 값을 어떻게 할당 할 수 있습니까?

분류에서Dev

목록 목록을 쉼표없이 각 목록에 대한 새 줄이있는 문자열로 어떻게 바꿀 수 있습니까?

분류에서Dev

이 JSON 문자열 Android에서 특정 키에 대한 값을 어떻게 얻을 수 있습니까?

분류에서Dev

Java에서 배열의 각 값 쌍을 어떻게 바꿀 수 있습니까?

분류에서Dev

자동 스크롤이 페이지 하단에 도달 한 후 페이지에서 URL 배열을 어떻게 반복 할 수 있습니까?

분류에서Dev

다른 테이블에서 DataFrame의 NaN 값을 어떻게 바꿀 수 있습니까?

분류에서Dev

파이썬 사전의 모든 값을 값 범위로 어떻게 바꿀 수 있습니까?

분류에서Dev

C # Unity JsonUtility,이 간단한 json을 유용한 C # 객체로 어떻게 바꿀 수 있습니까?

분류에서Dev

PyTorch Tensor에서 어떻게 값을 바꿀 수 있습니까?

분류에서Dev

특정 CSS 그리드 항목에 대한 완벽한 사각형을 어떻게 만들 수 있습니까?

분류에서Dev

문자열 안의 이상한 패턴을 어떻게 바꿀 수 있습니까?

분류에서Dev

한 번의 클릭으로 하나 이상의 메일 제목을 어떻게 바꿀 수 있습니까?

분류에서Dev

리사이클 러보기에서 내 항목의 배경색을 어떻게 바꿀 수 있습니까?

분류에서Dev

swt에서 합성에 대한 특정 시간 후에 레이블을 어떻게 변경할 수 있습니까?

분류에서Dev

이벤트 '제출'버튼 이후에 'HtmlService.createHtmlOutput ()'의 값을 어떻게 전달할 수 있습니까?

분류에서Dev

중첩 된 dict의 값을 pandas 데이터 프레임으로 어떻게 바꿀 수 있습니까?

분류에서Dev

tkinter 레이블을 새 레이블로 어떻게 바꿀 수 있습니까?

Related 관련 기사

  1. 1

    최근 연도에 특정 값이있는 경우 각 그룹에 대해 이전 연도의 값을 어떻게 바꿀 수 있습니까?

  2. 2

    HTML-페이지의 특정 섹션에 도달 한 후 내 navbar를 어떻게 "고정"할 수 있습니까?

  3. 3

    파이썬에서 데이터 프레임의 특정 값을 열 평균으로 어떻게 바꿀 수 있습니까?

  4. 4

    이 C ++ 코드 조각은 어떻게 임의의 유형을 고유 한 정수로 바꿀 수 있습니까?

  5. 5

    지도 확대 / 축소에서 레이어 가시성을 어떻게 바꿀 수 있습니까?

  6. 6

    이 가격 슬라이더를이 PHP 페이지에서 간단한 HTML 선택으로 어떻게 바꿀 수 있습니까? 선택 옵션이 두 가지 값 (최소 및 최대 가격)을 전달할 수 있습니까?

  7. 7

    PHP : 특정 데이터를 어떻게 바꿀 수 있습니까?

  8. 8

    사용자에게 권한이 있어도 SFTP를 통해 파일 이름을 바꿀 수 없습니다.

  9. 9

    R에서 두 데이터 프레임 사이의 값을 어떻게 찾고 바꿀 수 있습니까?

  10. 10

    evince에서 북마크의 이름을 어떻게 바꿀 수 있습니까?

  11. 11

    특정 값을 삽입하여 각 행에서 NULL이 아닌 첫 번째 값을 바꿀 수 있습니까?

  12. 12

    체인 정규식 (notepad ++)에서이 표현식을 어떻게 바꿀 수 있습니까?

  13. 13

    파이 게임에서 직사각형에 고유 한 값을 어떻게 할당 할 수 있습니까?

  14. 14

    목록 목록을 쉼표없이 각 목록에 대한 새 줄이있는 문자열로 어떻게 바꿀 수 있습니까?

  15. 15

    이 JSON 문자열 Android에서 특정 키에 대한 값을 어떻게 얻을 수 있습니까?

  16. 16

    Java에서 배열의 각 값 쌍을 어떻게 바꿀 수 있습니까?

  17. 17

    자동 스크롤이 페이지 하단에 도달 한 후 페이지에서 URL 배열을 어떻게 반복 할 수 있습니까?

  18. 18

    다른 테이블에서 DataFrame의 NaN 값을 어떻게 바꿀 수 있습니까?

  19. 19

    파이썬 사전의 모든 값을 값 범위로 어떻게 바꿀 수 있습니까?

  20. 20

    C # Unity JsonUtility,이 간단한 json을 유용한 C # 객체로 어떻게 바꿀 수 있습니까?

  21. 21

    PyTorch Tensor에서 어떻게 값을 바꿀 수 있습니까?

  22. 22

    특정 CSS 그리드 항목에 대한 완벽한 사각형을 어떻게 만들 수 있습니까?

  23. 23

    문자열 안의 이상한 패턴을 어떻게 바꿀 수 있습니까?

  24. 24

    한 번의 클릭으로 하나 이상의 메일 제목을 어떻게 바꿀 수 있습니까?

  25. 25

    리사이클 러보기에서 내 항목의 배경색을 어떻게 바꿀 수 있습니까?

  26. 26

    swt에서 합성에 대한 특정 시간 후에 레이블을 어떻게 변경할 수 있습니까?

  27. 27

    이벤트 '제출'버튼 이후에 'HtmlService.createHtmlOutput ()'의 값을 어떻게 전달할 수 있습니까?

  28. 28

    중첩 된 dict의 값을 pandas 데이터 프레임으로 어떻게 바꿀 수 있습니까?

  29. 29

    tkinter 레이블을 새 레이블로 어떻게 바꿀 수 있습니까?

뜨겁다태그

보관