对于一个游戏项目,我正在使用它们的属性绘制图像,例如文件名、位置、比例、旋转。
这是绘图的部分:
this.context.save();
this.context.translate(item.position.x, item.position.y);
if (item.rotation > 0) {
this.context.rotate(item.rotation * (Math.PI / 180));
}
if (item.scale.x !== 1 || item.scale.y !== 1) {
this.context.scale(item.scale.x, item.scale.y);
}
var width = item.imageSize.width * item.scale.x;
var height = item.imageSize.height * item.scale.y;
this.context.drawImage(this.assets.image[item.fileName], -(width / 2), -(height / 2), width, height);
this.context.restore();
(不要介意奇怪的定位,这不重要)
这工作正常,但有一件事我不明白:
旋转和缩放可以通过两种不同的方式完成:首先缩放然后旋转,或者其他方式。从逻辑上讲,人们会认为先缩放然后旋转是正确的,但由于某种原因,它只有在我先旋转然后缩放时才能正常工作。
这样做的正确方法是什么?