2013-12-17 51 views
2

我試圖刪除包含組(包含形狀)或只是形狀(線,矩形,圓等)作爲其元素的數組的元素。我的作用是類似下面的東西:在Kineticjs中刪除數組中的組

deleteSelectedShape = function() { 
var i, 
    shapeObj, 
    selectedObjects = currentContext.getSelectedObjects(), 
    shapeLayer = currentContext.getShapeLayer(); 

    if (selectedObjects && selectedObjects.length > 0) { 
    for (i = 0; i < selectedObjects.length; i += 1) { 
     shapeObj = selectedObjects[i]; 
     // shapeObj.remove(); results same error as mentioned at last 

      if (shapeObj.nodeType === "Group") { 
        shapeObj.destroyChildren(); 
      } 
       else{ 
       shapeObj.destroy(); 
       } 
      } 
     } 

     selectedObjects = []; 
     shapeLayer.draw(); 
    }; 

我想這也

if (shapeObj.nodeType === "Group") { 
      var childs = []; 
      childs = shapeObj.getChildren(); 
      for (var j = 0; j < childs.length; j++) { 
       childs[j].remove(); 
      } 
     } 
     else{ 
      shapeObj.remove(); 
      } 
     } 
    } 

這裏單個形狀越來越刪除,但如果在陣列組,它給錯誤:

TypeError: this.getParent(...) is undefined in Kineticjs file 

請建議我適當的想法。謝謝 !!!

回答

0

一個問題:從數組中刪除項目時,必須反向遍歷該數組。

var i=selectedObjects.length-1; 

while(i-- >=0){ 

    var shapeObj = selectedObjects[i]; 

    if (shapeObj.nodeType === "Group") { 
     shapeObj.destroyChildren(); 
    }else{ 
     shapeObj.destroy(); 
    } 

} 
+0

刪除任何號碼沒有任何問題。的選定形狀。但是,如果數組中有一個組,只有這樣它纔會拋出上面的錯誤。所以我想知道如何從數組中刪除該組以及其他形狀?循環不是問題。謝謝 !!! – ashokpd

+0

我也試過你的代碼。但它又是一樣的錯誤消息! – ashokpd