2012-03-25 5 views
0
bgY += (enemySpeed + heroSpeed)/2; 
ctx.drawImage(bg, bgX, bgY - gameHeight); 
ctx.drawImage(bg, bgX, bgY); 
if(bgY > gameHeight) 
{ 
    bgY = 0; 
} 

나는 위의 코드를 사용하여 내 캔버스에 배경을 그려 놓았다.CANVAS : SHMUP 배경 그림

새로운 이미지를 그릴 때마다 약간의 지연이 발생하는 것을 제외하면 잘 작동합니다. 그려지기 바로 전에, 플레이어는 배경이 맨 위에 두 번째 이미지가없는 것을 볼 수 있습니다. (그건 내 주요 문제가되지 않습니다,하지만 당신은 너무 도움이 될 수 있습니다)

어쨌든, 지금은 주요 문제에 대한 :

잘 모르겠어요,하지만 난 이미지가 캔버스 아래로 이동하면 생각들이 실제로 제거되지는 않습니다. 게임이 느려지거나 잠시 후에 성능이 떨어지지 않습니까?

이것을 방지 할 수있는 방법이 있습니까?

+0

"이미지가 캔버스 아래로 이동했습니다"또는 "실제로 제거되지 않았습니다"라는 의미는 무엇입니까? – Howard

+0

첫 번째 코드 줄 "bgY + = (enemySpeed ​​+ heroSpeed)/2;"는 bgY 지점이 아래쪽으로 이동한다는 것을 의미합니다. 즉, 새 배경 이미지를 그릴 때 이전보다 낮아집니다. 포인트가 캔버스 아래에 오면 bgY를 0으로 설정합니다. 즉, 다시 위쪽에서 그리기 시작합니다. 그러나 캔버스 아래에있는 이미지 (이미 그려진 이미지)는 여전히 캔버스 아래에 있으며, 볼 수는 없습니다. –

+0

아, 이제 알겠습니다. 이미지 그리기는 그리기 전에 이미지가 캔바스 경계와 관련하여 잘 리도록 (캔버스의 합리적인 구현에 대해) 최적화됩니다. 이것은 성능에 약간의 영향을 미치지 만, 당신이 볼 수있는 것은 아무것도 없습니다 (그리고 측정조차 거의하지 않습니다). – Howard

답변

0

첫 번째 질문에 대해서는 if 문이 drawImage을 호출하기 전에 올바르지 만 나중에는 그렇지 않아야합니다. 모든 관련 사례를 저장해야하는 모듈러스 연산으로 대체 할 수도 있습니다.

bgY += (enemySpeed + heroSpeed)/2; 
bgY %= gameHeight; 
ctx.drawImage(bg, bgX, bgY - gameHeight); 
ctx.drawImage(bg, bgX, bgY); 
+0

그래, 임시 투명성이 도움이된다. 감사. –

관련 문제