我实际上正在开发一个 html5 Canvas 项目,该项目使用 fabric.js 框架进行 Canvas 交互。现在我正在努力删除多个对象。下面的代码似乎并没有跟踪选中的对象,而是跟踪 Canvas 上的所有对象。
var deleteSelectedObject = document.getElementById('delete-item');
deleteSelectedObject.onclick = function(){
var curSelectedObjects = new Array();
curSelectedObjects = canvas.getObjects(canvas.getActiveGroup);
canvas.discardActiveGroup();
for (var i = 0; i < curSelectedObjects.length; i++){
canvas.setActiveObject(curSelectedObjects[i]);
canvas.remove(canvas.getActiveObject());
}
};
不要理解我的失败。
最佳答案
由于解决了大部分问题的@Kangax 评论,我找到了以下解决方案来从 Canvas 中删除当前选定的对象。
var deleteSelectedObject = document.getElementById('delete-item');
deleteSelectedObject.onclick = function()
{
if(canvas.getActiveGroup()){
canvas.getActiveGroup().forEachObject(function(o){ canvas.remove(o) });
canvas.discardActiveGroup().renderAll();
} else {
canvas.remove(canvas.getActiveObject());
}
};
该函数检查是否选择了一个组。如果选择了一个组,则该组的每个对象都会被删除。 如果未选择任何组,则该函数会尝试删除选定的对象。如果未选择任何内容,则不会更改 Canvas 。
关于javascript - 在 html5 中的 fabric.js Canvas 上一次删除多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11829786/