Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在JS中为无限跑步者类型的游戏制作无止境的画布_Javascript_Html_Html5 Canvas - Fatal编程技术网

Javascript 如何在JS中为无限跑步者类型的游戏制作无止境的画布

Javascript 如何在JS中为无限跑步者类型的游戏制作无止境的画布,javascript,html,html5-canvas,Javascript,Html,Html5 Canvas,我希望HTML5画布永远不会结束,这样正方形就永远不会停止移动,它会继续“运行”,这样它就可以跳过障碍,分数也会增加,等等。我真的不知道该怎么做。请提前帮助和感谢。我已经在下面发布了我的代码供大家看,我将JS合并到HTML中,是的 <!DOCTYPE html> <html lang="en"> <head> <link rel="stylesheet" href="style.css"> <meta charset="UTF

我希望HTML5画布永远不会结束,这样正方形就永远不会停止移动,它会继续“运行”,这样它就可以跳过障碍,分数也会增加,等等。我真的不知道该怎么做。请提前帮助和感谢。我已经在下面发布了我的代码供大家看,我将JS合并到HTML中,是的

<!DOCTYPE html>
<html lang="en">
<head>
    <link rel="stylesheet" href="style.css">
    <meta charset="UTF-8">
    <title>Move Square</title>
</head>
<body>
    <div id="centre">
    <canvas id="myCanvas" height="100px" width="200px"></canvas>
</div>


<script>

function draw(){
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");

ctx.beginPath();
ctx.fillStyle = "grey";
ctx.fillRect(0,0,300,300);
ctx.fillRect(0,0,300,300);
ctx.closePath();


x+=dx/4;

//Draw Square
ctx.fillStyle = "red";
ctx.fillRect(x,y,20,20);

clearRect(0, 0, canvas.width, canvas.height);

}

var x = 20;
var y = 20;
var dx = 5;
var dy = 5;




setInterval(draw,10);

document.addEventListener("keydown", keyDownHandler, false);
document.addEventListener("keyup", keyUpHandler, false);
function keyDownHandler(e) {
    if(e.keyCode == 39) {
        x+=dx;
    }
    }







</script>
</body>
</html>

摆正
函数绘图(){
var canvas=document.getElementById(“myCanvas”);
var ctx=canvas.getContext(“2d”);
ctx.beginPath();
ctx.fillStyle=“灰色”;
ctx.fillRect(0,0300);
ctx.fillRect(0,0300);
ctx.closePath();
x+=dx/4;
//画正方形
ctx.fillStyle=“红色”;
ctx.fillRect(x,y,20,20);
clearRect(0,0,canvas.width,canvas.height);
}
var x=20;
变量y=20;
var-dx=5;
var-dy=5;
设置间隔(抽签,10);
文档。addEventListener(“keydown”,keyDownHandler,false);
文件。addEventListener(“keyup”,keyUpHandler,false);
函数keyDownHandler(e){
如果(e.keyCode==39){
x+=dx;
}
}

如果您想让块无休止地“向前”运行,则需要使画布上的所有其他对象向后移动。当然,要做到这一点,您需要添加另一个对象以供参考


摆正
函数绘图(){
var canvas=document.getElementById(“myCanvas”);
var ctx=canvas.getContext(“2d”);
ctx.beginPath();
ctx.fillStyle=“灰色”;
ctx.fillRect(0,0300);
ctx.fillRect(0,0300);
ctx.closePath();
//画正方形
ctx.fillStyle=“红色”;
ctx.fillRect(x,y,20,20);
//两个额外的绿色方块
ctx.fillStyle=“绿色”;
ctx.fillRect(x2,50,20,20);
ctx.fillRect(x3,50,20,20);
//让它们以相同的速度向后移动
x2-=dx/4;
x3-=dx/4;
}
var x=20;
变量y=20;
var-dx=5;
var-dy=5;
//绿色块的X坐标:
var x2=50;
var x3=250;
设置间隔(抽签,10);
文档。addEventListener(“keydown”,keyDownHandler,false);
//文件。addEventListener(“keyup”,keyUpHandler,false);
函数keyDownHandler(e){
如果(e.keyCode==39){
x+=dx;
}
}

不要用制作“无限”画布来思考这个问题;可以这样想:反复产生障碍物,这些障碍物会出现在屏幕上,当它们不再可见时会从内存中删除,从而产生在无限空间中滚动的幻觉。