2010-12-14 4 views
0

안녕하세요 저는 AS3에 처음 왔고 어떤 점에서 아이를 제거하는 가장 좋은 방법인지 궁금합니다. 나는 그러나하면 ArgumentError를 반환하는 Actionscript 3 포인트에서 자식을 제거

Holder.removeChild(Holder.getObjectsUnderPoint(new Point(exampleX, exampleY))[0]); 

을 시도 : 오류 # 2025 : 제공된 DisplayObject는 호출자의 자식이어야합니다.

제안 사항? 같은

당신은 조건을 설정할 수 있습니다 ...

답변

0

getObjectsUnderPoint() 메소드는 반드시 홀더 개체의 직계 자식하지 않을 수 DisplayObject의 배열을 반환합니다 그들은 그랜드 어린이나 그랜드 그랜드 아이 등이 될 수 있습니다 이 : 그것은 내 실수뿐만 아니라 손자를 반환 ... 때문에

var objects:Array = Holder.getObjectsUnderPoint(yourPoint); 
for each(var child:DisplayObject in objects) 
{ 
    if(child.parent == Holder) 
     Holder.removeChild(child) ; 
} 

Holder.contains 아무것도 필터링하지 않습니다!

+0

ok 시도했습니다. Holder.contains()를 통과하지만 제거하려고하면 여전히 동일한 오류가 발생합니다. 이상한 허 – Dain

+0

방금 ​​내가 parenthese가 없다는 것을 깨달았다. (당신이 코드를 시도 했습니까? 아니면 수정 했습니까?) – PatrickS

+0

그래, 그걸 고르고 그것을 추가했습니다. 객체 배열에있는 객체의 부모를 확인하기로 결정했습니다. 어쨌든 나는 mattias 추한 코드 솔루션을 사용하여 결국 – Dain

0

Patricks 버전이 작동하지 않는 이유를 모르겠습니다. 다음은 클립의 부모를 사용하는 대체 (못생긴 코드) 솔루션입니다.

var clips : Array = _container.getObjectsUnderPoint(_point); 

for each(var clip : DisplayObject in clips) 
{ 
    clip.parent.removeChild(clip); 
} 
+0

추한 수 있지만 작동하는 것, 감사합니다! – Dain