Paper.JS创建另一个绘制路径的函数

时间:2015-04-28 07:29:32

标签: javascript paperjs

所以我正在尝试读取数据,然后将其传递给另一个函数,以便我可以绘制路径。 数据很好,一切正常,我可以在控制台中查看。

正常绘图(使用onMouseEvent)功能正常。

我可以使用不同的函数绘制它的唯一方法是,如果我在JS文件的顶部声明路径: var reloadPath = new Path();

问题在于,当我呼叫reloadPath时,它会自动连接线路(即使用户已经点击其他地方),这是我不想要的。

我在文件的开头尝试了var reloadPath;,然后是

function reloadDrawing(data) {
    reloadPath = new Path();
    reloadPath.strokeColor = 'black';
    reloadPath.add(data);
    view.draw();

}

但这并没有画任何东西。

感谢。

编辑:

尝试了修正案,但没有奏效。我正在使用Jade而不是HTML(使用node.js)所以我的html中没有任何东西:使用socket.io也是如此 JS:

This does all the dynamic drawing stuff
io.on( 'reloadDrawing', function( data ) {
    console.log("fired");
    endDrawing(data);
    startDrawing(data);

});

function endDrawing(data){
  reloadPath.add(data);
  view.draw();
  reloadPath = new Path();
}

function startDrawing(data) {
  reloadPath = new Path();
  reloadPath.strokeColor = 'black';
  reloadPath.add(data);
  view.draw();
}

1 个答案:

答案 0 :(得分:0)

在您的函数中,您覆盖reloadPath,从而销毁已存在的数据。删除一行并添加另一个函数endDrawing(或您喜欢的任何名称)。在onMouseUpEvent中调用此新功能,按顺序"完成"这条线。在onMouseDown - 事件中,使用startDrawing函数开始新行。

function reloadDrawing(data) {
  reloadPath.add(data);
  view.draw();
}

function endDrawing(data){
  reloadPath.add(data);
  view.draw();
  reloadPath = new Path();
}

function startDrawing(data) {
  reloadPath = new Path();
  reloadPath.strokeColor = 'black';
  reloadPath.add(data);
  view.draw();
}