如何在Paper.js中实现撤销功能以移除路径的最后一个线段?
Paper.js 移除路径最后线段的撤销实现方案
要实现移除路径最后一个线段的撤销功能,你之前的代码问题出在对Paper.js SegmentList属性和方法的使用错误上,以下是正确的原生实现方式:
核心问题纠正
你代码里的lastsegment是错误的属性名,Paper.js的segments集合(SegmentList类型)获取最后一个线段的正确属性是last;另外remove是方法,必须加括号才能调用。
正确实现代码
两种可靠的原生实现方式:
方式1:通过索引移除最后一个线段
利用segments.length - 1获取最后一个线段的索引(因为索引从0开始),传给removeSegment:
undo: function(){ // 保留至少1个线段,防止路径失效 if (path.segments.length > 1) { path.removeSegment(path.segments.length - 1); } }
方式2:直接调用线段的remove()方法
通过segments.last获取最后一个线段对象,直接调用其remove()方法:
undo: function(){ if (path.segments.length > 1) { path.segments.last.remove(); } }
为什么你的代码失效?
path.segments.lastsegment:属性名错误,正确应为path.segments.lastpath.segments.lastsegment.index:因属性名错误无法获取有效索引path.segments.lastsegment.remove:仅引用方法未调用,需改为remove()
内容的提问来源于stack exchange,提问作者simonmarkis
相关产品推荐
相关产品推荐

