我有这个代码

function clear(){
    context2D.clearRect(0, 0, canvas.width, canvas.height);
}


function desenhaBonecoDir(){

    clear();
    context2D.setTransform(1, 0.30, 1, -0.30, 10, 380);//problem here
    context2D.drawImage(bonecoRight, x, y);
    x += -10 * xDirection;
}




如果我删除评论“此处有问题”的行,则脚本运行良好,但是如果我使用set变换更改了视角,我不知道为什么,该图像被复制但未删除,结果是当我重复该图像时按下键

有什么帮助吗?

谢谢

最佳答案

问题是由于更改了透视图而引起的,但是在清除透视图时并未将其更改回原来的位置,因此它清除了“透视图”而不是整个画布,请尝试以下操作。它所做的是保存当前透视图,然后将其更改为所需的任何东西,绘制等,然后还原以还原以前的透视图,以便恢复正常的坐标。

context2D.save();
context2D.setTransform(1, 0.30, 1, -0.30, 10, 380);
context2D.drawImage(bonecoRight, x, y);
context2D.restore();


稍微修改了代码以显示其工作原理。
http://jsfiddle.net/89yjG/1/

评论保存并还原,您会注意到工件。

10-05 20:54