gpt4 book ai didi

javascript - 如何从 HTML5 Canvas 中删除已经绘制的图像(只是那个而不是其他图像)

转载 作者:行者123 更新时间:2023-11-28 04:07:03 25 4
gpt4 key购买 nike

所以,我必须为学校制作这个元素,我需要能够专门删除一张图像,因为当我执行 clearRect() 时,它会删除所有图像。

<!DOCTYPE html>
<html>

<head>
<title>Game</title>
<style type="text/css">
* { margin:0; padding:0; } /* to remove the top and left whitespace */

html, body { width:100%; height:100%; } /* just to be sure these are full screen*/

canvas { display:block; } /* To remove the scrollbars */

#gC {
position: relative;
left: 16vw;
top: 9vh;
margin: 0;
padding: 0;
}

body {
background-image: url('bg.jpeg') !important;
overflow: hidden !important;
}
</style>
</head>

<body> <canvas id="gC" width="1500" height="1000"></canvas>
<script type="text/javascript">
var canvas = document.querySelector("#gC");
var ctx = canvas.getContext("2d");
var team1 = new Image();
var bT = new Image();
var t1_x = 150;
var t1_y = 100;
var bT_x = 50;
var bT_y = 350;
var AI_I = 0;
team1.src = "team1.png";
bT.src = "bT.png";

function team1AI() {
ctx.clearRect(0, 0, canvas.height, canvas.width);
ctx.drawImage(bT, bT_x, bT_y);
ctx.drawImage(team1, t1_x, t1_y);
t1_x++;
}
var t1AI = setInterval(team1AI,10);

function t1AI_inter(){
if(AI_I >= 90){
clearInterval(t1AI);
}

AI_I++;

}

function leftArrowPressed(){
ctx.clearRect(0, 0, canvas.height, canvas.width);
ctx.drawImage(bT, bT_x, bT_y);
bT_x-=5;
}

function moveSelection(evt) {
switch (evt.keyCode) {
case 37:
leftArrowPressed();
break;
case 39:
rightArrowPressed();
break;
case 38:
upArrowPressed();
break;
case 40:
downArrowPressed();
break;
/*
case 32:
spaceKeyPress();
break;
*/
}
}

setInterval(t1AI_inter,10);

window.addEventListener('keydown', moveSelection);

</script>

最佳答案

游戏(通常)不是基于“keydown”之类的事件。它们基于循环,一个帧循环。例如,在每一帧或迭代中,您应该

  1. 读取用户输入
  2. 更新游戏每个组件的状态
  3. 绘制新框架

无论如何,如果您只想删除一张图像,只需删除所有图像并只重绘应该可见的图像即可。你可以有一个数组,其中包含每个图像的状态(可见或不可见)或类似这样的东西:

var images = [
{visible: false},
{visible: true},
{visible: true}
];

您还可以使用函数“draw”绘制基于先前数组的图像,另外两个函数“hide”和“show”可以接收图像的索引以隐藏或显示,更新其状态在数组中,然后调用绘制函数。

如果您想继续,请阅读游戏循环,特别是网页游戏开发中使用的 requestAnimationFrame 函数。

关于javascript - 如何从 HTML5 Canvas 中删除已经绘制的图像(只是那个而不是其他图像),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42909359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com