PaperJS:穿过前一条路径时停止绘制路径
PaperJS: stop drawing path when crossing a previous path
我正在使用 paperjs,当用户绘制一条线时,我希望它在穿过之前绘制的线时停止。这是我当前的测试代码:
tool.minDistance = 1;
var path;
var drawing = false;
function onMouseDown(event) {
if (!drawing) {
startLine(event);
drawing = true;
}
}
function onMouseDrag(event) {
if (drawing) {
path.add(event.point);
}
}
function onMouseUp(event) {
if (drawing) {
endLine(event);
}
}
function startLine(event) {
path = new Path();
path.strokeColor = 'black';
path.strokeWidth = 10;
path.strokeCap = 'round';
path.add(event.point);
}
function endLine(event) {
path.add(event.point);
path.smooth();
path.simplify();
path.onMouseDrag = function(event) {
if (drawing) {
console.log('ending line')
endLine(event);
}
}
drawing = false;
}
我添加了一个 onMouseDrag 事件来检测用户何时穿过现有路径。这在大多数情况下有效,但有时不会触发,尤其是在绘制缓慢时。
我的问题是为什么在那种情况下没有触发 onMouseDrag 事件? And/or有没有更好的方法来完成我想做的事情?
更好的方法是使用Path.getIntersections
绘制时使用它来获取与绘制路径的交点。如果是return东西,交点就停下来画
我正在使用 paperjs,当用户绘制一条线时,我希望它在穿过之前绘制的线时停止。这是我当前的测试代码:
tool.minDistance = 1;
var path;
var drawing = false;
function onMouseDown(event) {
if (!drawing) {
startLine(event);
drawing = true;
}
}
function onMouseDrag(event) {
if (drawing) {
path.add(event.point);
}
}
function onMouseUp(event) {
if (drawing) {
endLine(event);
}
}
function startLine(event) {
path = new Path();
path.strokeColor = 'black';
path.strokeWidth = 10;
path.strokeCap = 'round';
path.add(event.point);
}
function endLine(event) {
path.add(event.point);
path.smooth();
path.simplify();
path.onMouseDrag = function(event) {
if (drawing) {
console.log('ending line')
endLine(event);
}
}
drawing = false;
}
我添加了一个 onMouseDrag 事件来检测用户何时穿过现有路径。这在大多数情况下有效,但有时不会触发,尤其是在绘制缓慢时。
我的问题是为什么在那种情况下没有触发 onMouseDrag 事件? And/or有没有更好的方法来完成我想做的事情?
更好的方法是使用Path.getIntersections
绘制时使用它来获取与绘制路径的交点。如果是return东西,交点就停下来画