2013-12-17 3 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