2013-06-23 6 views
-1

개체에 사용되는 Elevator 클래스가 있는데이를 배열에 넣습니다. 그러나 캔버스를 지우는 내 준비 기능은이 개체를 제외하고는 화면의 모든 항목에 적용됩니다. 내가 resrawing 기능을 둘러 보았고, 내가 그들을 부르지 만 아무것도 그것을 고칠 것 같지 않은데, 나는이 객체가 그렇지 않다면 다른 사람들이 영향을받는 것을 보지 못한다.캔버스 다시 그리기가 작동하지 않습니다.

클릭하고 무슨 뜻인지 참조 : 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

증가분을 크게하지 않겠지 만, 문제는 그 중 하나를 지우지 않는 것입니다. 그게 뭐가 잘못 됐어. 플레이어가 움직이는 것처럼 엘리베이터는 왜 안되습니까? –

관련 문제