paper.js 动态删除和添加新点到现有的移动(动画)路径
paper.js remove and add new points dynamically to existing, moving (animated) path
我正在研究这个原型 click me (updated)。我遇到的问题如下。您可以使用 (W,A,S,D) 或 (up,left,down,right) 来移动您的蛇(路径),意思是当您撞到另一条蛇(路径交叉点)时,您正在吃掉他(他正在失去他的部分(点),而你正在获得新的部分(点)。删除点并不完美,但它有效。这是代码:
var intersections = myPath.getIntersections(testWorm);
for(var i = 0; i < intersections.length; i++) {
testWorm.segments[i].remove();
}
它可以进行一些调整,但主要是它能正常工作。
但是附加新点的代码不起作用。这是代码:
var length = 15; // initial points length
length++; // increase initial points length to meet algorithm
var start = new paper.Point(Math.random()*100,Math.random()*100); // calculate start for new point
myPath.add(new paper.Point(myPath._segments * length + start.x, 0 + start.y)); // add new point
/* it was suppose to fix problem */ myPath.smooth();
/* it was suppose to fix problem */ view.update();
如您所见,在您尝试与蠕虫相交的那一刻,蠕虫消失了。但是没有错误的控制台日志,所以我不明白出了什么问题。
感谢大家的帮助 ;)
我不确定这部分代码应该做什么,但我很确定它会产生 NaN
,这意味着您的点将具有无效坐标并且无法绘制:myPath._segments * length
。此外,您不应访问 'private' 属性(以 '_'
开头),而是使用 myPath.segments
.
我正在研究这个原型 click me (updated)。我遇到的问题如下。您可以使用 (W,A,S,D) 或 (up,left,down,right) 来移动您的蛇(路径),意思是当您撞到另一条蛇(路径交叉点)时,您正在吃掉他(他正在失去他的部分(点),而你正在获得新的部分(点)。删除点并不完美,但它有效。这是代码:
var intersections = myPath.getIntersections(testWorm);
for(var i = 0; i < intersections.length; i++) {
testWorm.segments[i].remove();
}
它可以进行一些调整,但主要是它能正常工作。
但是附加新点的代码不起作用。这是代码:
var length = 15; // initial points length
length++; // increase initial points length to meet algorithm
var start = new paper.Point(Math.random()*100,Math.random()*100); // calculate start for new point
myPath.add(new paper.Point(myPath._segments * length + start.x, 0 + start.y)); // add new point
/* it was suppose to fix problem */ myPath.smooth();
/* it was suppose to fix problem */ view.update();
如您所见,在您尝试与蠕虫相交的那一刻,蠕虫消失了。但是没有错误的控制台日志,所以我不明白出了什么问题。
感谢大家的帮助 ;)
我不确定这部分代码应该做什么,但我很确定它会产生 NaN
,这意味着您的点将具有无效坐标并且无法绘制:myPath._segments * length
。此外,您不应访问 'private' 属性(以 '_'
开头),而是使用 myPath.segments
.