Fabricjs:克隆子类对象会使克隆不可见



我想复制一个结构对象,该对象是常规结构类的子类(即与原始对象具有相同属性的新对象(。克隆似乎是可行的,事实上,克隆一个常规对象,如Rect,效果很好。但是,如果我使用相同的代码克隆子类的实例,则生成的对象在画布上不可见(尽管它在canvas.getObjects()的结果中列出(。

我做错了什么?

这里是一个最小的例子。这也是在https://codepen.io/micrology/pen/dyKPbRO运行此操作将显示3个矩形,两个红色,但只有一个黄色。应该有2个黄色矩形。

var canvas = new fabric.Canvas('canvas')
var rect = new fabric.Rect({
top: 100,
left: 100,
width: 60,
height: 70,
fill: 'red',
})
canvas.add(rect)
var clonedRect
rect.clone((obj) => {
clonedRect = obj
clonedRect.set({left: obj.left + 10, top: obj.top + 10})
})
canvas.add(clonedRect)
var CustomRect = fabric.util.createClass(fabric.Rect, {
type: 'rect',
initialize: function (options) {
this.callSuper('initialize', options)
},
})
var customRect = new CustomRect({
top: 200,
left: 200,
width: 50,
height: 50,
fill: '#ffff00',
})
canvas.add(customRect)
var clonedCustomRect
customRect.clone((obj) => {
clonedCustomRect = obj
clonedCustomRect.set({left: obj.left + 10, top: obj.top + 10})
})
canvas.add(clonedCustomRect)

对于仍然有这个问题的人,目前正在进行公开讨论。

最新更新