小编Jer*_*ohg的帖子

Fabric.js stage.getActiveObject().clone()与fabric.util.object.clone(stage.getActiveObject())

我正在使用Fabric.js,我正在尝试为图像和文本元素实现复制功能.我找到了两个关于如何复制对象的解决方案:

方法1

stage.getActiveObject().clone();
Run Code Online (Sandbox Code Playgroud)

方法2

fabric.util.object.clone(stage.getActiveObject());
Run Code Online (Sandbox Code Playgroud)

使用第一种方法时,不会发生克隆,使用第二种方法时,克隆确实会发生.更具体地说,对于第一种方法,我使用了以下代码:

var obj = stage.getActiveObject();
if (!obj) return;

var clone = obj.clone();
clone.set({
    top: clone.get('top') + 30
});
stage.add(clone);
stage.renderAll(); 
Run Code Online (Sandbox Code Playgroud)

在活动对象上运行此代码时,它会一直告诉克隆是未定义的.虽然两种方法都可以做同样的事情,但必须有充分的理由使用方法1或2.

有谁可以解释那两个之间的区别?

我注意到的另一件事是当使用第二种方法时,fabric.util.object.clone(stage.getActiveObject()); 克隆的对象获取与原始对象相同的ID.虽然克隆是原始的克隆,但我对他们共享相同的ID没有意义.换句话说,我如何克隆一个对象并给它一个唯一的ID?

javascript html5 clone canvas fabricjs

5
推荐指数
1
解决办法
2944
查看次数

标签 统计

canvas ×1

clone ×1

fabricjs ×1

html5 ×1

javascript ×1