2009-11-11 72 views

回答

7

而不是翻译前进,然后再翻译向后,只需将您当前的状态推到堆栈上,然后再进行traslate/rotate,并且完成后 - 将状态从堆栈中弹出。这是大多数图形应用程序如何使用翻译/旋转。

此外,您正在翻译x, y,然后另外拨打ctx.drawImage(guy, x, y)。实际上,这将使偏移量加倍。我要么摆脱翻译调用,要么将drawImage调用的位置参数更改为0, 0

function drawGuy() { 
    ctx.save();                               
    ctx.translate(x,y);  
    ctx.rotate(angle * Math.PI/180);                    
    ctx.drawImage(guy, 0, 0); 
    ctx.restore();            
}

退房规范有关context.save()context.restore()(画布的方式确实状态推/ POP),here

+0

太棒了,谢谢。但现在图像不旋转... – 2009-11-11 19:33:22

+0

多一个编辑..你需要增加你的旋转角度。这就是为什么旋转不会像动画一样发生。发生了,只是不随时间变化。 – JasonWyatt 2009-11-11 19:50:08

+0

哦是啊> _>傻了我,对不起。谢谢您的帮助! – 2009-11-11 20:57:50