我正在使用Fabric創建協作繪圖應用程序。由於此應用程序的性質,人們最好一次性刪除所有行,而不是執行某種撤消/擦除功能。刪除FabricJS中的多個路徑
我試圖遍歷的path
S中的列表中,像這樣:
canvas.getObjects().forEach((path) => {
if(path.senderId === client.id){
canvas.remove(path);
}
});
// Or
let paths = canvas.getObjects().filter(path => path.senderId === client.id);
while(paths.length) {
canvas.remove(paths[0]);
}
第一個不工作的,因爲除去路徑修改數組的長度(如所討論的here)。然而,第二個永遠運行,我不知道爲什麼。
如果這是錯誤的方法,請讓我知道。謝謝!
從畫布中移除路徑不會改變已過濾路徑數組的長度。 – Pointy
@好點,那是一個腦筋急轉彎。當我回家時,我會確保它有效,但我敢打賭,情況就是這樣。謝謝! –
據我所知,'getObjects()'返回由庫管理的內部數組的引用。但是當你使用'.filter()'時,你最終會得到一個* new *數組。 – Pointy