Path.Rectangle
, Path.Circle
и т. Д. - это просто фабричные функции, которые возвращают 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)
А вот и Эскиз .
Существуют и другие решения, которые вы можете попробовать:
- Подкласс
Path
к вашему Rectangle
типу.Подклассы официально не поддерживаются, но все еще выполнимы, через paper.Path.extend()
. - Добавить метод
Path.isRectangle()
, который проверяет сегменты и математически определяет, является ли это прямоугольником или нет, во время выполнения.