2012-10-24 5 views
0

단추를 눌렀을 때 자식을 만든 다음 자식이 칠 때 자식을 삭제합니다 ....이 작동하지만 다음에 단추를 다시 클릭하면 자식이 사라집니다. 다시 만들지 마라.as3 자식 만들기 및 삭제

어떻게하면됩니까?

function closebike(evt:MouseEvent):void { 
    var bike:DisplayObject = DisplayObject(evt.target); 
    bike.parent.removeChild(bike); 
} 

답변

2

: 여기 내 코드입니다 당신은 또한 이벤트 청취자를 제거하고 bikeride에 부모가 있는지 확인한 후 작업을 시도 할 수 있습니다. 이렇게하면 null 객체 참조 오류가 발생하지 않고 bikeride을 가비지 수집 (메모리에서 제거하여 리소스를 확보) 할 수 있습니다.

bikeride.addEventListener(MouseEvent.CLICK, closebike); 

function closebike(evt:MouseEvent):void 
{ 
    if(bikeride.parent) 
    { 
     bikeride.parent.removeChild(bikeride); 
    } 

    bikeride.removeEventListener(MouseEvent.CLICK, closebike); 
} 

개체가 올바르게 '삭제'될 것으로 예상되는 경우 이벤트 수신기를 제거하는 것이 매우 중요합니다.

+0

그랬어! 감사. 내가 묻는 것을 신경 쓰지 않는다면 내가 사용하고있는 방법에 어떤 문제가 있습니까? – Butterflycode

+0

** @ Butterflycode ** 'bikeride'에 추가 된 첫 번째 자녀를 삭제하려고합니다. – Florent

1

플로랑의에 추가 : 당신은 당신이 할 수있는 bikeride 인스턴스를 저장하지 않는 경우

removeChild(bikeride);; 

: 당신은 사용하여 아이를 제거 할 수 있습니다

var bikeride:MovieClip = new ridingbike(); 
ridinb.addEventListener(MouseEvent.CLICK, openbike); 
function openbike(evt:MouseEvent):void { 

addChild(bikeride); 
} 


bikeride.addEventListener(MouseEvent.CLICK, closebike); 
function closebike(evt:MouseEvent):void { 
    bikeride.removeChildAt(0); 
}