Javascript CreateJS EaselJS-不同形状的不一致旋转处理

Javascript CreateJS EaselJS-不同形状的不一致旋转处理,javascript,rotation,html5-canvas,easeljs,createjs,Javascript,Rotation,Html5 Canvas,Easeljs,Createjs,下面是一个小提琴动画,它显示了EaselJS旋转形状时的这种不一致性: 将创建星形、圆形、矩形和圆角矩形,并将其放置在完全相同的x、y位置 rect.x = star.x = circle.x = rrect.x = stage.canvas.width / 2; rect.y = star.y = circle.y = rrect.y = stage.canvas.height / 2; 然后,它们在滴答循环中以完全相同的方式旋转: rect.rotation = cir

下面是一个小提琴动画,它显示了EaselJS旋转形状时的这种不一致性:

将创建星形、圆形、矩形和圆角矩形,并将其放置在完全相同的x、y位置

    rect.x = star.x = circle.x = rrect.x = stage.canvas.width  / 2;
    rect.y = star.y = circle.y = rrect.y = stage.canvas.height / 2;
然后,它们在滴答循环中以完全相同的方式旋转:

rect.rotation = circle.rotation = rrect.rotation = star.rotation += 1;
所有形状都具有相同的regX和regY值(零)

从小提琴中可以看到,结果显示一些对象具有居中旋转,而另一些对象具有偏移旋转


对我来说,这似乎很混乱,但如果有人能帮助并纠正我的看法,我将不胜感激。

这正是因为Canvas API的工作方式。矩形和圆弧从左上角绘制,而圆和多边形从中心绘制

我已经修改了你的小提琴来调整regX和regY(就像你未使用的rect1形状)。绘制左上角形状时,也可以调整负片中的x/y

// Offset your regX/Y
shape.graphics.beginStroke("#00f").drawRect(0,0,40,40);
shape.regX = shape.regY = 20;

// Offset your draw operations' center point. This is my usual approach
shape.graphics.beginStroke("#f00").drawRect(-20,-20,40,40);
这里是一个更新的小提琴: