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

제시 제이

자바 스크립트를 사용하여 만든이 사각형이 있고 화살표 키로 이동할 수 있습니다. 여태까지는 그런대로 잘됐다. 이제 내 문제는 캔버스 끝을 칠 때 멈추기를 원한다는 것입니다. 캔버스 밖에서 사라지는 것을 원하지 않습니다. 어떻게하나요?

내 코드는 다음과 같습니다.

var canvas;
var context;
var rectX=10;
var rectY=10;

function fillRect() {
context.beginPath();
context.fillStyle = "#ffffff";
context.fillRect(0,0,1000+canvas.width,1000+canvas.height); 

context.beginPath();
context.fillStyle = "#666666";
context.fillRect(rectX,rectY,50,50);         
}


function onkeydown(e) {
if(e.keyCode==39) {rectX++;} //höger pil
else if(e.keyCode==37) {rectX--;} //vänster pil
else if(e.keyCode==38) {rectY--;} //uppåt pil
else if(e.keyCode==40) {rectY++;} //nedåt pil
fillRect();
}

window.addEventListener("keydown", onkeydown);


window.onload = function() {
canvas = document.getElementById("myCanvas"); 
context = canvas.getContext("2d");
fillRect();

}
#myCanvas {
margin: auto;
display: block;
width: 80%;
height: 400px;
background-color: white;
border: 3px solid black;
}
<!-- Jessica Odefjord -->
<!DOCTYPE HTML> 
	<html lang="sv">
		<head>
			<meta charset="utf-8">
			<link rel="stylesheet" type="text/css" href="inlämningsuppgift_javascript_jessicaodefjord.css" />
			<script type="text/javascript" src="inlämningsuppgift_javascript_jessicaodefjord_2.js"></script>
			<title>Flytta rektangeln</title>
		</head>
			<body>
				<header>
					<h1>Flytta rektangeln</h1>
					<h2>Flytta runt rektangeln med hjälp av piltangenterna</h2>
				</header>
					<main>
						<section id="firstsection">
							<h3>
							</h3>
						</section>
							<canvas id="myCanvas">
							</canvas>
					</main>
			</body>
	</html>

다닐

이것은 아마도 가장 효율적인 방법은 아니지만 onkeydown이동이 사각형을 멀리 보낼지 여부를 확인한 다음 안전한 경우에만 이동할 수 있습니다.

편집 : 이와 같은 것이 트릭을해야합니다 :)

function onkeydown(e) {
    if(e.keyCode==39 && rectX+50 < canvas.width) {rectX++;} //höger pil
    else if(e.keyCode==37 && rectX > 0) {rectX--;} //vänster pil
    else if(e.keyCode==38 && rectY > 0) {rectY--;} //uppåt pil
    else if(e.keyCode==40 && rectY+50 < canvas.height) {rectY++;} //nedåt pil
    fillRect();
}

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

버튼을 클릭 할 때마다 캔버스 개체를 이동하는 방법은 무엇입니까?

분류에서Dev

페이지를 새로 고칠 때 PHP 출력이 손실되지 않도록 onload () 함수 사용을 중지하는 방법은 무엇입니까?

분류에서Dev

버튼을 누를 때 toggleClass ()를 중지하는 방법은 무엇입니까?

분류에서Dev

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

분류에서Dev

jQuery에서 페이지를 새로 고칠 때 탭을 유지하는 방법은 무엇입니까?

분류에서Dev

지정된 값을 사용하여 테이블에서 td를 색칠하는 방법은 무엇입니까?

분류에서Dev

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

분류에서Dev

SharedPreference를 사용하여 캔버스에 문자열을 그리는 방법은 무엇입니까?

분류에서Dev

drawImage ()를 사용하여 캔버스에 그림을 그리는 방법은 무엇입니까?

분류에서Dev

기간이 서로 겹칠 때 시작 및 종료 날짜를 사용하여 하루 길이 집합을 계산하는 방법은 무엇입니까?

분류에서Dev

마지막 백 스페이스를 칠 때 태그 입력 칩을 제거하지 않는 방법은 무엇입니까?

분류에서Dev

파일에서 읽을 때 스택 버퍼 오버플로를 중지하는 방법은 무엇입니까?

분류에서Dev

페이지를 새로 고칠 때 확인란이 선택 취소되는 것을 중지하는 방법은 무엇입니까?

분류에서Dev

bashrc를 사용하여 경로 레벨을 색칠하는 방법은 무엇입니까?

분류에서Dev

패들 캔버스를 칠 때마다 공 개체를 추가하십시오.

분류에서Dev

Razor를 사용하여 버튼을 클릭 할 때 변수를 설정하는 방법은 무엇입니까?

분류에서Dev

캔버스 개체를 화면 중앙에 정렬하는 방법은 무엇입니까?

분류에서Dev

Nmap을 사용하여 전체 네트워크를 스캔하는 방법은 무엇입니까?

분류에서Dev

Nmap을 사용하여 전체 네트워크를 스캔하는 방법은 무엇입니까?

분류에서Dev

HTML 캔버스 요소를 끌 때 실수로 페이지 선택을 방지하는 방법은 무엇입니까?

분류에서Dev

ListViewItem의 버튼을 사용하여 ListView에서 개체를 삭제하는 방법은 무엇입니까?

분류에서Dev

버튼을 다시 클릭 할 때 여기서 핸들러를 중지하는 방법은 무엇입니까?

분류에서Dev

뷰 부모에 배율이있을 때 아티팩트를 업 스케일하지 않고 뷰 캔버스에 그리는 방법은 무엇입니까?

분류에서Dev

화면 왼쪽 상단을 칠 때 Unity 대시를 여는 방법은 무엇입니까?

분류에서Dev

화면 왼쪽 상단을 칠 때 Unity 대시를 여는 방법은 무엇입니까?

분류에서Dev

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

분류에서Dev

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

분류에서Dev

자바 스크립트를 사용하여 PHP 개체 값을 확인하는 방법은 무엇입니까?

분류에서Dev

InkCanvas를 사용하여 캔버스에서 수행 한 작업을 UWP C #의 이미지 파일에 저장하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    버튼을 클릭 할 때마다 캔버스 개체를 이동하는 방법은 무엇입니까?

  2. 2

    페이지를 새로 고칠 때 PHP 출력이 손실되지 않도록 onload () 함수 사용을 중지하는 방법은 무엇입니까?

  3. 3

    버튼을 누를 때 toggleClass ()를 중지하는 방법은 무엇입니까?

  4. 4

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

  5. 5

    jQuery에서 페이지를 새로 고칠 때 탭을 유지하는 방법은 무엇입니까?

  6. 6

    지정된 값을 사용하여 테이블에서 td를 색칠하는 방법은 무엇입니까?

  7. 7

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

  8. 8

    SharedPreference를 사용하여 캔버스에 문자열을 그리는 방법은 무엇입니까?

  9. 9

    drawImage ()를 사용하여 캔버스에 그림을 그리는 방법은 무엇입니까?

  10. 10

    기간이 서로 겹칠 때 시작 및 종료 날짜를 사용하여 하루 길이 집합을 계산하는 방법은 무엇입니까?

  11. 11

    마지막 백 스페이스를 칠 때 태그 입력 칩을 제거하지 않는 방법은 무엇입니까?

  12. 12

    파일에서 읽을 때 스택 버퍼 오버플로를 중지하는 방법은 무엇입니까?

  13. 13

    페이지를 새로 고칠 때 확인란이 선택 취소되는 것을 중지하는 방법은 무엇입니까?

  14. 14

    bashrc를 사용하여 경로 레벨을 색칠하는 방법은 무엇입니까?

  15. 15

    패들 캔버스를 칠 때마다 공 개체를 추가하십시오.

  16. 16

    Razor를 사용하여 버튼을 클릭 할 때 변수를 설정하는 방법은 무엇입니까?

  17. 17

    캔버스 개체를 화면 중앙에 정렬하는 방법은 무엇입니까?

  18. 18

    Nmap을 사용하여 전체 네트워크를 스캔하는 방법은 무엇입니까?

  19. 19

    Nmap을 사용하여 전체 네트워크를 스캔하는 방법은 무엇입니까?

  20. 20

    HTML 캔버스 요소를 끌 때 실수로 페이지 선택을 방지하는 방법은 무엇입니까?

  21. 21

    ListViewItem의 버튼을 사용하여 ListView에서 개체를 삭제하는 방법은 무엇입니까?

  22. 22

    버튼을 다시 클릭 할 때 여기서 핸들러를 중지하는 방법은 무엇입니까?

  23. 23

    뷰 부모에 배율이있을 때 아티팩트를 업 스케일하지 않고 뷰 캔버스에 그리는 방법은 무엇입니까?

  24. 24

    화면 왼쪽 상단을 칠 때 Unity 대시를 여는 방법은 무엇입니까?

  25. 25

    화면 왼쪽 상단을 칠 때 Unity 대시를 여는 방법은 무엇입니까?

  26. 26

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

  27. 27

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

  28. 28

    자바 스크립트를 사용하여 PHP 개체 값을 확인하는 방법은 무엇입니까?

  29. 29

    InkCanvas를 사용하여 캔버스에서 수행 한 작업을 UWP C #의 이미지 파일에 저장하는 방법은 무엇입니까?

뜨겁다태그

보관