필자는 캔버스로 작성하고 작성하기 전에 원을 그리십시오. 바이올린 확인 : http://jsfiddle.net/NgCVA/
데모로를, 나는 페이지에 이미지 (게임 캐릭터)를 배치하고 절대적으로 그 위에 캔버스 요소를 배치했습니다
<img src="http://zef.me/wp-content/uploads/2009/10/funny-dog-costume.jpg"/>
<canvas width="330" height="396"></canvas>
그런 다음 채우기를 것을 애니메이션 루프에서 반복적으로 검은 색 전체 캔버스 더 크고 더 큰 원 클리핑 동안이 매우 단순한 애니메이션이 있음을 유의하십시오 당신은 아마 더 우아한 무언가를하고 싶을 것이다
var canvas = document.getElementsByTagName('canvas')[0],
ctx = canvas.getContext('2d'),
cx = canvas.width/2,
cy = canvas.height/2,
r = 10,
R_MAX = 400;
ctx.fillstyle = '#000';
function draw() {
r += 1;
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.save();
// Draw clipping area
ctx.beginPath();
ctx.moveTo(0, 0);
ctx.lineTo(canvas.width, 0);
ctx.lineTo(canvas.width, canvas.height);
ctx.lineTo(0, canvas.height);
ctx.closePath();
ctx.moveTo(cx + r, cy);
ctx.arc(cx, cy, r, 0, Math.PI*2, true);
ctx.closePath();
ctx.clip();
// Fill everything not clipped
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.restore();
if(r < R_MAX) setTimeout(draw, 10);
}
draw();
(예 : 자신의 애니메이션 루프 , 쉬운 ng, 뭐든간에). 중요한 부분은 캔버스를 클리핑하고 채우는 기술입니다.
정말 고맙습니다. 감사합니다. 그래도 몇 가지 질문이 있습니다. | 1.이 효과를 사용하여 플레이어의 아바타 및 주변의 위치를 표시하려고합니다. 그래서, 나는 이것을 플레이어의 좌표 (hermes.currentX, hermes.currentY)에서 시작하고 싶습니다. 어떻게해야합니까? | 2. 계시가 흰색 배경이나 빈 캔버스를 그리는 것처럼 보입니다. 나는 계시가 일어나는대로 내 게임 맵을 유지하고 싶다. 어떻게해야합니까? – user422318
3. 어떻게하면 되겠습니까? 게임 세계가 그려지고 게임이 종료된다고 가정합니다. 검은 색이 모퉁이에서 들어와 서클이 검은 색이 될 때까지 작아집니다. – user422318
1) 'cx', 'cy'는 원 중심의 좌표입니다. 원하는 값을 사용하십시오. 2) 여러 개의 캔버스를 사용하십시오. 하나는지도, 다른 하나는 스프라이트, 다른 하나는 스포트라이트입니다. 공통 항목에 다시 그려진 관련 항목을 넣으면 각 프레임에 그려야하는 항목의 양이 줄어 듭니다. 예를 들어 이동하지 않았 으면지도를 다시 그릴 필요없이 스프라이트를 다시 그릴 수 있습니다. 3) 'r'은 원의 현재 반경입니다. 10시에 별이 보일 때마다 그 별을 계속 추가합니다. 400에서 시작하여 대신 뺍니다. – Prestaul