如何在新版本的fabricJS中解析getActiveObject()和getActiveGroup()

How can I resolve getActiveObject() and getActiveGroup() in new version of fabricJS?

本文关键字:getActiveObject getActiveGroup 新版本 fabricJS      更新时间:2023-09-26

我从1.1.9版本开始就一直在使用fabricjs,并创建了一个相当大的应用程序。现在我正在尝试使用较新的版本 1.4.0,并发现有很多变化。可以使用getActiveObject()选择单个对象以及选择多个组对象,但是现在当我尝试获取所选组的某些属性(如strokeWidth)时,它在组对象上抛出错误,错误是"未捕获的类型错误:无法读取属性'strokeWidth'的null"。但是如果我对组对象使用 getActiveGroup(),则没有错误。事实是,如果这是问题所在,我必须重新创建我的整个项目。是否有可能通过一些小修复来解决我的情况?在哪里可以找到版本 1.4.0 的更改日志?

也许这可能是您的解决方案。getActiveObject() 如果选择了组,则返回 null,如果选择了对象,getAtctiveGroup() 也返回 null。只需创建一个函数,返回画布上选择的任何内容。

function getSelection(){
  return canvas.getActiveObject() == null ? canvas.getActiveGroup() : canvas.getActiveObject()
}

如果你现在在代码中用getSelection()调用替换所有getActiveObject(),这应该可以解决你的问题。希望这有帮助。

您可以使用 canvas.getActiveObjects() 返回所有选定的对象。

canvas.getActiveObjects().forEach((object) => {
  // do something with object
})