2013-06-23 109 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

使增量變大不會,問題在於不清除最後一個本身。那是什麼錯誤。就像玩家移動一樣,爲什麼不通過電梯:) –