我们可以通过多种方式绘制矩形,其中一种方法是首先定义Rectangle
,然后使用Path.Rectangle
绘制矩形:
var rect = new Rectangle({
from: [80, 50],
to: [100, 200]
})
var rpath = new Path.Rectangle(rect)
rpath.strokeColor = 'red'
在这一点之后,如果我们松开rect
(如果我们不保留指针或导出/导入项目),我们将不知道rpath
是Rectangle
还是不。
我们如何确定Path
是Circle
还是Rectangle
还是Polygon
或Polyline
?
答案 0 :(得分:2)
Path.Rectangle
,Path.Circle
等只是factory functions that return a Path
,它们看上去就像一个矩形。它们不是子类/类型。
因此,没有直接的方法可以推断类型。
作为一种解决方法,您可以在type
中存储一个item.data
道具,该道具在序列化/重新导入后仍然有效。
var rect = new Rectangle({
from: [80, 50],
to: [100, 200]
})
var rpath = new Path.Rectangle(rect)
rpath.strokeColor = 'red'
rpath.data = { type: 'rectangle' }
var serialized = rpath.exportJSON()
var reimported = paper.project.importJSON(serialized)
console.log(reimported.data.type)
这是Sketch。
您可以尝试其他解决方案:
Path
子类化为您自己的Rectangle
类型。子类不受官方支持,但仍可以通过paper.Path.extend()
来实现。Path.isRectangle()
,该方法在运行时检查线段并通过数学方法确定其是否为矩形。