旋转组并在舞台上涂写组。用代码发布

时间:2013-01-03 09:16:41

标签: html5 kineticjs

请这个小提琴我复制了我的完整项目 在这里,如果你在输出中打开小提琴你可以看到一个图像,在图像选择笔上涂鸦,添加文本等(这样执行一些功能)。然后使用旋转按钮旋转组然后尝试涂鸦你会明白什么是问题确切。

在我看来问题是我有一个舞台,并且一个图层被添加到舞台中,一个组被添加到图层中,并且不同的元素(如行文本等)被添加到该组中。然后组旋转,我试图根据舞台的鼠标位置绘制线。但它没有正确,因为组旋转了x和y我们正在采取的绘制线是从舞台。我需要从团队中取出x和y而不是从舞台上取下他们的任何方式。如果你不明白,请问我或发回帖。

1 个答案:

答案 0 :(得分:0)

这应该让你相当接近:http://jsfiddle.net/k4qB8/24/

// This rotates that added active line along with your group.
// This makes the draw direction correct
activeline.setRotationDeg(0-rootGroup.getRotationDeg());

// Here you'll have to figure a way to calculate how much to move the 
// line over so the draw is on the correct spot
// This is as close as I got it
     if(Math.abs(rootGroup.getRotationDeg()%360)==0)
           activeline.move(rootGroup.getX()-375, rootGroup.getY()-175);
     if(Math.abs(rootGroup.getRotationDeg()%360)==90)
           activeline.move(rootGroup.getX()-175, rootGroup.getY()+375);
     if(Math.abs(rootGroup.getRotationDeg()%360)==180)
           activeline.move(rootGroup.getX()+375, rootGroup.getY()+175);
     if(Math.abs(rootGroup.getRotationDeg()%360)==270)
           activeline.move(rootGroup.getX()+175, rootGroup.getY()-375);

另外,为逆时针旋转添加更多逻辑,因为这不能100%工作。

我认为真正的解决方案是在每个旋转上绘制不同的图层,如下所示:

 if (rotation is 90) : draw on lineLayer1;
 if (rotation is 180) : draw on lineLayer2;
 if (rotation is 270) : draw on lineLayer3;
 if (rotation is 360 || 0) : draw on lineLayer4;

这样您就可以旋转未绘制的图层来模拟旋转的感觉。