我写了一个小程序,我在那里移动路径点。这是没问题的,直到我更新到新的Fabrics 2.x.
以下是代码:
var boardpath = new fabric.Path('M '+eval(points[0][0]+versatzx)+' '+eval(points[0][1]+versatzy)+
' Q '+eval(manis[0][0]+versatzx)+' '+eval(manis[0][1]+versatzy)+' '+eval(points[1][0]+versatzx)+' '+eval(points[1][1]+versatzy)+
' Q '+eval(manis[1][0]+versatzx)+' '+eval(manis[1][1]+versatzy)+' '+eval(points[2][0]+versatzx)+' '+eval(points[2][1]+versatzy)+
' Q '+eval(manis[2][0]+versatzx)+' '+eval(manis[2][1]+versatzy)+' '+eval(points[3][0]+versatzx)+' '+eval(points[3][1]+versatzy)+
' Q '+eval(manis[3][0]+versatzx)+' '+eval(manis[3][1]+versatzy)+' '+eval(points[4][0]+versatzx)+' '+eval(points[4][1]+versatzy)+
' Q '+eval(manis[4][0]+versatzx)+' '+eval(manis[4][1]+versatzy)+' '+eval(points[5][0]+versatzx)+' '+eval(points[5][1]+versatzy)+
' Q '+eval(versatzx-manis[4][0])+' '+eval(manis[4][1]+versatzy)+' '+eval(versatzx-points[4][0])+' '+eval(points[4][1]+versatzy)+
' Q '+eval(versatzx-manis[3][0])+' '+eval(manis[3][1]+versatzy)+' '+eval(versatzx-points[3][0])+' '+eval(points[3][1]+versatzy)+
' Q '+eval(versatzx-manis[2][0])+' '+eval(manis[2][1]+versatzy)+' '+eval(versatzx-points[2][0])+' '+eval(points[2][1]+versatzy)+
' Q '+eval(versatzx-manis[1][0])+' '+eval(manis[1][1]+versatzy)+' '+eval(versatzx-points[1][0])+' '+eval(points[1][1]+versatzy)+
' Q '+eval(versatzx-manis[0][0])+' '+eval(manis[0][1]+versatzy)+' '+eval(points[0][0]+versatzx)+' '+eval(points[0][1]+versatzy)); //Bezier kurve, keine quadritische
boardpath.set({ fill: 'white', stroke: 'black', strokeWidth: 2, opacity: 0.5, selectable: false});
canvas.add(boardpath);
这就是我访问路径点的方式。
boardpath.path[2][3] = 120;
boardpath.path[2][4] = 120;
如上所述,我使用的是Fabrics 1.6.4。它的工作原理。但更新到2.x以灾难总数结束 加载SVG也无法使用新版本。 任何的想法? 刚刚意识到,它不适用于Fabric 1.7。上。所以改变必须是1.7。我将在旧的Fabric更新日志中挖掘一下。
答案 0 :(得分:0)
这是您在路径中显示更改所需的内容。 fabricjs中还不支持路径更改,因此如果不通知对象需要绘图操作,将脏标志设置为true,则修改数组的嵌套属性不会对任何效果进行排序。
boardpath.path[2][3] = 120;
boardpath.path[2][4] = 120;
boardpath.dirty = true;