Javascript 使用fabricjs从画布中删除所有对象(已分组/未分组)

Javascript 使用fabricjs从画布中删除所有对象(已分组/未分组),javascript,fabricjs,Javascript,Fabricjs,我正在尝试删除画布上的所有对象而不选择它们。画布中的对象包括已分组和未分组的对象。我看到的所有示例都演示了如何删除单个解组对象 Canvas.ForEachObject(function(o){ o.remove(); }); 请看小提琴的例子,我正在努力实现。 为了从画布中删除每个对象(已分组/未分组),我想出了需要做的事情。 首先,我必须得到画布上的所有对象 var obj = canvas.getObjects(); 一旦我得到了所有的对象,我只需要像我那样在它们之间

我正在尝试删除画布上的所有对象而不选择它们。画布中的对象包括已分组和未分组的对象。我看到的所有示例都演示了如何删除单个解组对象

Canvas.ForEachObject(function(o){
     o.remove();
    });
请看小提琴的例子,我正在努力实现。

为了从画布中删除每个对象(已分组/未分组),我想出了需要做的事情。 首先,我必须得到画布上的所有对象

var obj = canvas.getObjects();
一旦我得到了所有的对象,我只需要像我那样在它们之间循环移除每一个

canvas.remove(obj[0]).
我在索引中引用索引0的原因

canvas.remove(obj[0]) 
是因为每次从画布中删除对象时,列表“obj”中的对象数也会减少1,从而将所有对象上移1个索引。这意味着画布上的每个对象在某个时候都会位于“obj”列表的索引0处

这里有一个很好的例子。在这里,我删除画布上的所有对象,而不选择单个对象。 你只需要打个电话

canvas.clear()


它将删除所有对象

您知道canvas.remove可以接受多个参数吗? 所以最简单的方法应该是:

canvas.remove(...canvas.getObjects());

除画布外。清除此选项将只删除画布中的对象,而不删除背景。

我已经解决了。因此,我首先检索画布中的所有对象,然后循环遍历对象列表(分组和非分组),每次删除一个对象。var r=canvas.getObjects();(r.length!=0){canvas.remove(r[0]);canvas.discardActiveGroup();}我注意到canvas.clear()也会清除所有对象和画布属性,即画布背景色。这不是我想要实现的。@SifisoMfeya您可以存储颜色属性,然后再次初始化到canvas@SifisoMfeya这是你的更新如果你有很多对象,这个方法是无效的