Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在dynamic.js问题中,旋转dynamic.group_Javascript_Css_Html_Kineticjs - Fatal编程技术网

Javascript 在dynamic.js问题中,旋转dynamic.group

Javascript 在dynamic.js问题中,旋转dynamic.group,javascript,css,html,kineticjs,Javascript,Css,Html,Kineticjs,我使用的是动态js。我正在将图像、线条等添加到kinetic.group中,并尝试旋转该组,它正在正确旋转。但是在旋转组后,如果我试图画一条线,它就不能正确地在当前鼠标位置上绘制。它像旋转前一样画图 问题可能是,如果我旋转团队,舞台坐标似乎不会旋转。我应该做些什么来防止这种情况 参考代码-- 这样我就画出了界限 var activeline = new Kinetic.Line({ points: [{x:0,y:0}], stroke: "blue", strokeWidt

我使用的是动态js。我正在将图像、线条等添加到kinetic.group中,并尝试旋转该组,它正在正确旋转。但是在旋转组后,如果我试图画一条线,它就不能正确地在当前鼠标位置上绘制。它像旋转前一样画图

问题可能是,如果我旋转团队,舞台坐标似乎不会旋转。我应该做些什么来防止这种情况

参考代码--

这样我就画出了界限

 var activeline = new Kinetic.Line({
   points: [{x:0,y:0}],
   stroke: "blue",
   strokeWidth: 3,
   lineCap: "round",
   lineJoin: "round",
 });
 var mousePos = stage.getMousePosition();

 points.push({
            x: mousePos.x,
            y: mousePos.y
 });

 activeline.setPoints(points);
 rootGroup.add(activeline);

我不熟悉KineticJS,但似乎必须将转换矩阵重置回其默认状态。OpenGL有glLoadIdentity()方法。在KineticJS上搜索类似的方法

请参见本教程

我不熟悉KineticJS,但似乎必须将变换矩阵重置回其默认状态。OpenGL有glLoadIdentity()方法。在KineticJS上搜索类似的方法

请参见本教程

这应该会让你非常接近:


这应该会让你非常接近:


是的,但不完全。我试过同样的方法,但没有成功。是的,但不完全成功。我试过同样的方法,但没有成功。你的线条对象是Kinetic.group的成员吗?你能粘贴一些参考代码吗?行对象是组的成员。我将为您发布一些代码。var rootGroup=新的dynamic.Group();rootGroup.add(行);rootGroup.setRotationDeg(rootGroup.getRotationDeg()+90);您的代码不会显示您在何处以及如何绘制线。看起来您正在使用鼠标位置返回的坐标更新旋转后的线坐标,这些坐标相对于屏幕位置而不是组。我认为一种可能的方法是每次绘制线条时旋转线条(在其起点上)。我已发布了有关绘制线条的代码,请浏览一下,然后回答问题的解决方案。您的线条对象是否为Kinetic.group的成员?你能粘贴一些参考代码吗?行对象是组的成员。我将为您发布一些代码。var rootGroup=新的dynamic.Group();rootGroup.add(行);rootGroup.setRotationDeg(rootGroup.getRotationDeg()+90);您的代码不会显示您在何处以及如何绘制线。看起来您正在使用鼠标位置返回的坐标更新旋转后的线坐标,这些坐标相对于屏幕位置而不是组。我认为一种可能的方法是每次你画线时旋转线(在它的起点上)。我已经发布了关于画线的代码,请看一眼,然后回复问题的解决方案。
 var activeline = new Kinetic.Line({
   points: [{x:0,y:0}],
   stroke: "blue",
   strokeWidth: 3,
   lineCap: "round",
   lineJoin: "round",
 });
 var mousePos = stage.getMousePosition();

 points.push({
            x: mousePos.x,
            y: mousePos.y
 });

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