2012-03-05 4 views
0

저는 캔버스를 처음 사용하므로 초급 질문을 용서하십시오. 캔버스에서 색상을 변경하고, 회전하고, 위아래로 크기를 조절하는 사각형을 애니메이션으로 만들려고합니다.이 방법은 연습용입니다. 나는 모든 개념을 파악하고 동시에 모든 것을 수행하는 예제를 만들기 위해 노력하고 있습니다.HTML5 Canvas - 색상, 크기 및 회전 애니메이션하기

내가 원하는 것은 일정량까지 확대 한 다음 그 양에 도달하면 다시 시작 금액으로 축소 (그리고 다시 반복)합니다. 색상도 마찬가지입니다 (계속 애니메이션 효과를 적용한 후 색상을 거꾸로지나갑니다). 이것을 어떻게 할 수 있습니까?

http://jsfiddle.net/ggsFJ/1/

당신은 몇 가지 버그를 알 수 있습니다 : 색상은 노란색에 도달

  1. 되면 애니메이션이 중지

    여기에 내가 쓴 내 코드의 예입니다.

  2. 스케일링은 분명히 작동하지 않습니다.

  3. 회전은 캔버스를 충분히 빠르게 지우지 못합니다. 위치의 흔적을 보여주기 때문입니다.

내가 이것을 달성에 대한 몇 가지 리소스를 찾을 수 있습니다

? 어떤 도움을 주셔서 감사합니다.

+0

나는 minitech가 당신의 문제를 해결했다고 생각한다. 그냥 말하기를 원했을 때, 1. framerate가 지연되지 않습니다. 2. 첫 번째 완료를 확인한 후에 나중에 시간 초과를 호출해야합니다. – loxxy

+0

해당 용어를 삭제 해 주셔서 감사합니다. 그것은 확실히 더 이해가됩니다. – opes

답변

4

다른 모든 문제를 일으키는 하나의 작은 문제가있다 (물론, 떨어져 노란색에서 - 나는 특정 일을 경험하고 있지 않다가) :

ctx.restore; 

그 라인은 아무것도하지 않습니다. 괄호를 사용하여 ctx.restore으로 전화해야합니다. 당신은 스케일링이 작동하고, clearRect()가 아닌 변환 된 사각형을 취소합니다, 그렇게되면 : 내가 볼 수

ctx.restore(); 

And here's the updated demo.

+0

아. 간단한 오타 ... 감사합니다! 하지만 어떻게 점차적으로 원래의 규모로 축소 할 수 있습니까? 어떤 유형의 루프를 사용하면 그렇게 할 수 있습니까? 또한 색상 버그를 보려면 약 30 초 정도 애니메이션을 실행하면 내가 말하는 것을 볼 수 있습니다. – opes

+1

@ Dan : 부드러운 색상 변환을 위해서는'hsl (..., ..., ...)'색상 구문을 사용하는 것이 더 낫습니다. 그것은 이미 색상환이며, ''을 지원하는 모든 브라우저가이를 지원합니다. 올라가고있는 동안, 내려가는 것에 대해, 당신은 그것에 대한 약간의 공상적인 트릭을 필요로 할 것입니다. http://jsfiddle.net/ggsFJ/8/에서 내 업데이트를 확인하십시오. – Ryan

+0

굉장! 그것이 바로 내가 찾는 것입니다. 그것은 나를 많이 보여줍니다. 고마워! – opes

0

문제는 restore 메소드 호출이다. 방금 ​​실수로 ctx.restore이라고 말한 것일 수 있습니다. 그것은이어야한다 ctx.restore();

+0

네, 단순한 오타입니다. 그래도 고마워! – opes