画布重绘无法工作

Canvas redraw not working

本文关键字:工作 布重绘      更新时间:2023-09-26

我有一个用于对象的Elevator类,我把它们放在一个数组中。但是,清除画布的Prepare函数适用于屏幕上除此对象之外的所有其他对象。我试着在重新绘制函数和调用它们的位置周围移动,但似乎没有什么能解决它,我不知道如果这个对象不受影响,其他函数会受到什么影响?

点击查看我的意思:http://www.taffatech.com/Platformer.html

function drawElevators()
{
for (var i=0;i<Elevators.length;i++)
{ 
Elevators[i].y--;
ctx.fillStyle = "grey";
ctx.fillRect(Elevators[i].x,Elevators[i].y,Elevators[i].width,Elevators[i].height);

}

}

我的循环:

function Loop(){
Prepare();
movePlayer();   
if(level == 1)
{
Level1();
}
else if(level == 2)
{
Level2();
}
else if (Level ==3)
{
Level3();
}
else
{
Level4;
}

 if(ElevatorOn == true)
  {
   drawElevators();
  }
checkCol();
drawPlayer();

requestAnimFrame(Loop);
}

你有太多的电梯,它们都靠得很近,而且会无限繁殖。Prepare()函数有效,此处没有错误。

尝试添加此项以限制电梯数量:

function Level1()
{
    ...
    var Ele1 = new Elevator(canvasWidth - (canvasWidth - 90),canvasHeight - 50,40,20);
    if(Elevators.length<2){
        Elevators.push(Ele1);
    ....
}