2013-06-23 98 views
-1

我有一个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); 
} 

回答

2

你有太多的电梯里面全是靠在一起,他们产卵无限。 Prepare()函数的工作原理并不在这里。

尝试增加此限制电梯的数量:

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

但我只创建了一个电梯的对象,如果我想每级超过1台电梯等什么呢?我怎么能这样做,所以对象刚上升(y--),然后重新绘制对象? –

+0

您已重新绘制该对象。但他们移动得太慢,所以他们都粘在一起。试着让它们快速上升:'y- = 50',或者用例如不同的初始x坐标。 – simonzack

+0

使增量变大不会,问题在于不清除最后一个本身。那是什么错误。就像玩家移动一样,为什么不通过电梯:) –