요청 애니메이션 프레임을 사용하여 선 그리기 애니메이션을 만드는 데 어려움을 겪고 있습니다. setInterval 함수를 사용하는 동안 모든 것이 잘 작동했지만 어노테이션 프레임이 훨씬 더 최적화되었고 간격의 모든 함수가이 방식으로 작성되어야한다고 읽었습니다. 그래서 여기요청 애니메이션 프레임을 사용하여 캔버스에서 선 그리기 애니메이션 만들기
내 코드입니다 :
var에 topMinX = 3; var topMaxX = 75; var topMinY = 2;
var topMaxY = 2; var min; var max;
//request animation frame
(function animate(){
var t = setTimeout(function(){
requestAnimFrame(animate);
var d = render(topMinX,topMaxX,topMinY,topMaxY,true);
},20);
})();
function render(xMin,xMax,yMin,yMax,direction){
if(direction){
min = xMin;
max = xMax
}else{
min = yMin;
max = yMax;
}
if(min<max){
context.beginPath();
if(direction){
context.moveTo(xMin,yMin);
xMin = xMin+2;
alert(xMin);
context.lineTo(xMin,yMax);
}else{
context.moveTo(xMin,yMin);
yMin = yMin+2;
context.lineTo(xMax,yMin);
}
context.lineWidth = 4;
context.stroke();
}
}
문제는이 xMin 값이 증가하지 것입니다. 그것은 항상 경고 5 것입니다 그리고 나는 그것을 모든 반복에서 2 씩 증가 할 것으로 예상했다. 기본적으로 사각형을 그려야하므로 대각선 이동이 필요하지 않으므로 방향 매개 변수를 추가 한 것입니다.
저는 캔버스를 처음 사용하고 애니 프레임을 요청하므로 어떤 도움이 더 유용 할 것입니다.
음 .... 네 ... 그게 문제인지는 모르겠지만 어떻게 해결 해야할지 모르겠군요. X와 Y를 인자로 사용하거나 huuuuuuuuuuge 재귀를 할 것입니다. – hjuster
기본적으로, 결국 render 함수를 호출하고 싶습니다. 콜백 함수는 렌더링 함수를 다시 트리거하지만 다른 매개 변수를 사용하므로 새 줄을 그립니다. – hjuster
@hjuster : 업데이트 된 [Fiddle ] (http://jsfiddle.net/79zcp/5/) 이것이 당신이 성취하고자했던 것입니까? – marbor3