Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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 如何在每次单击按钮时移动画布对象?_Javascript_Canvas - Fatal编程技术网

Javascript 如何在每次单击按钮时移动画布对象?

Javascript 如何在每次单击按钮时移动画布对象?,javascript,canvas,Javascript,Canvas,我正在尝试制作一个游戏,我在网格中的一个固定行(例如第5行[水平])中随机生成块。每次单击按钮时,我都希望块从第5行移动到第4行(垂直)。然后我想在第5行生成新的随机块,依此类推。我该怎么做?现在它只在第一行下生成新块(在第6行,然后是第7行,依此类推) //访问画布 var canvas=document.getElementById('grid'); var ctx=canvas.getContext('2d'); var w=ctx.canvas.width; var h=ctx.ca

我正在尝试制作一个游戏,我在网格中的一个固定行(例如第5行[水平])中随机生成块。每次单击按钮时,我都希望块从第5行移动到第4行(垂直)。然后我想在第5行生成新的随机块,依此类推。我该怎么做?现在它只在第一行下生成新块(在第6行,然后是第7行,依此类推)

//访问画布
var canvas=document.getElementById('grid');
var ctx=canvas.getContext('2d');
var w=ctx.canvas.width;
var h=ctx.canvas.height;
//绘图网格
var drawingGrid=函数(){
对于(x=0;x
施米特里斯
分数:0

刷新
我删除了你的
moveY()
函数,并添加了
moveRow()
函数。游戏对象(矩形)保存到列表
对象
。每次单击按钮时,它们的y位置都会增加。删除旧的绘制位置,绘制新的位置。然后将随机生成的块添加到第5行

请注意
removeCell()中的
clearRect()
函数
还会删除网格的一部分。这会导致每次重新绘制网格。您可以通过使用一个子函数拆分网格创建来改进代码,该子函数只在一个单元格上绘制网格。然后,您可以只在需要的单元格上重绘网格。这可能会提高性能,并使代码在我看来更漂亮s、 但它也是这样工作的

我还建议使用
length
而不是
60
,并根据长度计算较厚的网格线,例如
8*length
而不是
480
等等

//访问画布
var canvas=document.getElementById('grid');
var ctx=canvas.getContext('2d');
var w=ctx.canvas.width;
var h=ctx.canvas.height;
//绘图网格
var drawingGrid=函数(){
对于(x=0;x
施米特里斯
分数:0

刷新
您是否缺少删除以前生成的块的功能?