회전 된 사각형을 지우고 캔버스에서 같은 위치 또는 다른 곳에 다시 그려야합니다. 문제는 지워진 부분이 사각형의 경계와 일치하지 않아 더티 비트가 뒤에 남는 것입니다. 캔버스가 회전 된 구형으로 사용되는 전체 회전되지 않은 공간을 취소하여, 회전 할 때 회전 된 HTML5 캔버스 컨텍스트를 올바르게 지우는 방법은 무엇입니까?
var cvs = document.getElementById('testcanvas');
var ctx = cvs.getContext('2d');
var rectColor = 'green';
var x = 300;
var y = 10;
var width = 200;
var height = 150;
var rotation = 0;
setInterval(animate, 100);
function animate(){
clearRect();
update();
drawRect();
}
function clearRect(){
ctx.save();
ctx.rotate(rotation);
ctx.clearRect(x, y, width, height);
ctx.restore();
}
function update(){
rotation += 0.1;
x++;
}
function drawRect(){
ctx.save();
ctx.fillStyle = rectColor;
ctx.rotate(rotation);
ctx.fillRect(x, y, width, height);
ctx.restore();
}
또 다른 문제의 clearRect (
)는 파이어 폭스에서 다르게 동작합니다.http://jsfiddle.net/MFz2z/17/
전체 캔버스를 지우고 모든 것을 다시 그리는 것 이외에 다른 해결 방법이 있습니까? 저는 Chrome 22와 Firefox 15.0.1을 사용합니다.
안티 에일 리아스에는 문제가 있지만 해제 할 수는 없습니다. [이] (http://stackoverflow.com/q/195262/757095) –