我有使用javascript創建的這個矩形,我可以用箭頭鍵移動它。到現在爲止還挺好。現在我的問題是,我想讓它停止在畫布的結尾處。我不希望它能夠在畫布外消失。我怎麼做?如何在使用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>
\t <html lang="sv">
\t \t <head>
\t \t \t <meta charset="utf-8">
\t \t \t <link rel="stylesheet" type="text/css" href="inlämningsuppgift_javascript_jessicaodefjord.css" />
\t \t \t <script type="text/javascript" src="inlämningsuppgift_javascript_jessicaodefjord_2.js"></script>
\t \t \t <title>Flytta rektangeln</title>
\t \t </head>
\t \t \t <body>
\t \t \t \t <header>
\t \t \t \t \t <h1>Flytta rektangeln</h1>
\t \t \t \t \t <h2>Flytta runt rektangeln med hjälp av piltangenterna</h2>
\t \t \t \t </header>
\t \t \t \t \t <main>
\t \t \t \t \t \t <section id="firstsection">
\t \t \t \t \t \t \t <h3>
\t \t \t \t \t \t \t </h3>
\t \t \t \t \t \t </section>
\t \t \t \t \t \t \t <canvas id="myCanvas">
\t \t \t \t \t \t \t </canvas>
\t \t \t \t \t </main>
\t \t \t </body>
\t </html>
邊注:您的代碼段不會(至少對我來說...)工作。它顯示'TypeError:畫布是空':( – Daneel
感謝您指出了!也許它現在的作品?:) –
是的它的確如此! :) – Daneel