我正在尝试编写一个关于滑雪板的游戏,但是到目前为止,当我尝试制作树(绿色矩形)时,它们没有出现。
代码:
var canvas = document.getElementById("canvas"),
ctx = canvas.getContext("2d");
canvas.width = 1000;
canvas.height = 800;
var x = canvas.width / 2,
speed = 0.1,
size = 5,
alive = 1,
keys = [];
function player() {
if (alive === 1) {
if (keys[37] || keys[65]) {
x -= 3;
}
if (keys[39] || keys[68]) {
x += 3;
}
if (x > canvas.width) {
x = canvas.width;
}
if (x < 0) {
x = 0;
}
ctx.beginPath();
ctx.fillStyle = "black"
ctx.arc(x, 100, size, 0, Math.PI * 2);
ctx.fill();
}
}
function tree() {
var treeX = Math.floor(Math.random() * (canvas.width + 1)) + 25;
var treeY;
if (treeY < 1) {
treeY = canvas.height;
} else {
treeY -= speed;
}
ctx.fillStyle = "green";
ctx.fillRect(treeX, treeY, 5, 8);
}
function update() {
requestAnimationFrame(update);
ctx.clearRect(0, 0, canvas.width, canvas.height);
player();
tree();
}
update();
document.body.addEventListener("keydown", function(e) {
keys[e.keyCode] = true;
});
document.body.addEventListener("keyup", function(e) {
keys[e.keyCode] = false;
});
<canvas id="canvas"></canvas>
我试着切换事情的顺序,并使用控制台,看看树在哪里,但没有工作。
1条答案
按热度按时间w51jfk4q1#
对于
player
,您在函数外部的一些不同变量中跟踪 * state *。要使树能够更新,还必须跟踪其状态。
这里有一个方法可以做到这一点:
treeX
和treeY
x
和y
坐标tree
函数之外,跟踪树列表。update
中,将树列表替换为更新的树。下面是一个正在运行的例子: