2013-11-22 3 views
0

ActionScript 3.0의 배열에서 자식을 제거하는 방법은 무엇입니까? 여기 내 코드가 있습니다. 내가 제거하고자하는 자식을 nailList[]이라는 배열에 넣고 그것을 gameStage에 놓습니다.actionscript의 배열에서 자식을 제거하는 방법

function makeNails():void 
{ 
    for (var i=0; i< 3; i++) 
    { 
     for (var j=0; j<3; j++) 
     { 
      var tempNail = new Nail2(j * C.NAIL_DISTANCE + C.NAIL_START_X, 
      i * C.NAIL_DISTANCE + C.NAIL_START_Y); 

      nailList.push(tempNail); 
      gameStage.addChild(tempNail); 
     } 
    } 
    gameStage.addEventListener(Event.ENTER_FRAME,update); 
    gameStage.addEventListener(MouseEvent.CLICK, clickToHit); 
} 

다음은 손톱을 제거하는 데 사용한 코드입니다. 그러나이 코드 이후에는 아무 일도 일어나지 않습니다. 손톱은 아직 거기 있습니다.

for (var j:int = nailList.length; j >= 0; j--) 
{ 
    removeNails(j); 
    trace("Remove Nail"); 
} 
function removeNails(idx:int) 
{ 
    gameStage.removeChild(nailList[idx]); 
    nailList.splice(idx,0); 
} 

는 내가 게임을 다시 시작하고 새로운 것을 추가 할 수 있도록 MovieClip을 제거 할.

답변

1

유효한 배열 인덱스 범위는 0에서 length - 1입니다. removeChildnailList[nailList.length]으로 잘못 입력하려고 시도했으며 오류가 발생하는 입니다. j의 초기 값을 nailList.length - 1으로 변경해야합니다.

for (var j:int = nailList.length - 1; j >= 0; j--) 
           ^^^ 

splice의 두 번째 매개 변수는 카운트를 삭제입니다 (주석에서 지적한 것처럼) 또 다른 문제입니다. 그래서 당신은 당신은 배열의 자식을 제거하는 splice을 사용할 수 있습니다 0 대신

nailList.splice(idx, 1); 
        ^
+1

코드에서 또 다른 작은 실수가 있습니다. 코드에서 0 대신 1 개의 객체에 대한 접합을 수행해야합니다. – Vesper

+0

@Vesper, 맞습니다. 감사. – taskinoor

+0

이미 고쳐 주셔서 고맙습니다. 그리고이 트릭을했습니다. 나는 액션 스크립트에서 아주 새로운 임무를 수행 할 수 없기 때문에 논리의 일부를 파악할 수 있습니다. 다시 한번 감사드립니다. – catalyztz13

0

의 1을 사용합니다.

arrName.splice(2,1); 

희망 하시겠습니까?

관련 문제