나는 학교에서 간단한 플래시 게임을 진행하고 있습니다. 한 수준에서 여러 개의 적을 생성하고 플레이어가 그들을 쏘라고되어 있습니다. 나는 총에 맞은 적을 없애기 위해 removeChild()를 사용했지만 적을 클릭 (적중)하면 무대의 모든 것이 제거됩니다. 그것은 완전히 비어 있습니다. 그것을 제거 왜 여기 혼란의AS3 - removeChild()가 무대에서 모든 것을 제거합니다.
public function getroffen(evt:MouseEvent):void{
trace("hit");
this.parent.removeChild(this);
}
종류 : 적을 맞았 경우
private function Game2():void{
for (var i:uint=0; i<50; i++) {
var man:MovieClip = new man_mc();
man.x=Math.random()*750;
man.y=Math.floor(Math.random()*(70))+350;
addChild(man);
man.addEventListener(MouseEvent.CLICK, getroffen);
}
기능 'getroffen'검사 : 적 내 무대를 채울 수
기능은 다음과 같다 무언가를 클릭하는 대신에 무대 위의 모든 것. 어떤 도움이 필요합니까? 고마워.
감사. 이것은 잘 작동합니다. Tim S가 제공 한 코드의 차이점을 설명해 주시겠습니까? 나는 당신의 코드보다 당신의 코드가 더 좋다고 생각하지만, 둘 다 속임수를 쓰는 것처럼 보입니다. – cabaret
둘 다 기능적으로 동일합니다. 유일한 차이점은'target' 매개 변수 대신'currentTarget' 매개 변수 (아마도 더 낫다)를 사용한다는 것입니다. 차이점은 이벤트 모델이 작동하는 방식과 이벤트 리스너를 등록한 대상에 달려 있습니다. 내가하고있는 일은 목표물을 'MovieClip'으로 캐스팅하는 것입니다 (null인지 확인한 다음 원하는 경우 반환 할 수 있습니다). 그리고 나서 부모를 호출하여 제거합니다. 'DisplayObject'를 다른 것에 추가하면, 그것은 그 객체의 자식이되고'parent' 매개 변수가 설정됩니다. obj.parent.removeChild (obj)를 사용하면 쉽게 제거 할 수 있습니다. – divillysausages
'target'과'currentTarget'의 차이점은 플래시의'Event' 모델은 캡처 단계, 이벤트 단계 , 버블 링 단계. display리스트에있는 객체가 이벤트를 보내면'Stage-> parent-> parent-> parent-> child'가됩니다. 여기서'child'는 이벤트를 전달한 객체이고'parent'는 부모입니다. DisplayObject' 모든 '무대'까지. 우리가 포착 단계에있는 마지막 부모가 될 때까지. 우리가'자식 '에 도달하면, 우리는 사건 단계에 있습니다. 그 후, 이벤트는 다시 '스테이지'로 되돌아갑니다. – divillysausages