2017-09-21 13 views
1

나는 scenePage라는 스테이지에 MovieClip이 있고, 문자 MC로 구성된 char_panel이라는 MovieClip이 있습니다. 이 중 하나가 char1_mc입니다.movieclip 내에서 자식을 제거하는 방법

char1_mc를 클릭하면 새 인스턴스 (newChar)가 만들어지고 scenePage에 자식이 추가됩니다. 스테이지에서 btn_remove라는 버튼을 클릭하면 scenePage에서 newChar를 제거해야합니다. 문제는 scenePage 내의 자식 (newChar)이 버튼을 클릭해도 제거되지 않는다는 것입니다.

나는

scenePage.removeChild(newChar); 

를 사용하여 시도하지만, 말을 나에게 오류를 제공 "매개 변수 자녀해야 null이 아닌." scenePage 내에서 인스턴스에 액세스하는 다른 방법이 있습니까? 나는 scenePage에있는 아이에게 접근 할 수 있어야합니다.

import flash.display.MovieClip; 

var newChar: MovieClip; 

char1_mc.addEventListener(MouseEvent.CLICK, showChar1); 
function showChar1(e:MouseEvent):void 
{ 
    newChar = new character1(); 
    newChar.height = 215; 
    newChar.width = 220; 
    newChar.x = 20; 
    newChar.y = 202.60; 
    MovieClip(root).scenePage.addChild(newChar); 
} 

을 그리고 이것은 기본 타임 라인에 btn_remove위한 스크립트입니다

가 여기에 char1_mc가 char_panel 내부 스크립트입니다, 내가 AS3 위해 수출 후 character1는 char1_mc의 클래스 이름입니다. 사전에

btn_remove.addEventListener(MouseEvent.CLICK, remove_character); 
function remove_character(e:MouseEvent):void 
{ 
    scenePage.removeChild(newChar); 
} 

감사합니다 :)

+0

"는 char_panel 범위의 일부입니다 newChar 개체를 제거"말하는

scenePage.removeChild(char_panel.newChar); 

관련 코드. 오류는'newChar' var에 할당 된 객체가 없다는 것입니다. (또는 newChar' var이 아직/더 이상 존재하지 않습니다.) – BadFeelingAboutThis

+0

@BadFeelingAbout이 스크립트를 이미 추가했습니다. ^^ –

답변

0

귀하의 문제는 범위 중 하나입니다.

기본 타임 라인과 char_panel의 범위가 다릅니다. 이것은 하나의 vars가 다른 하나의 vars에서 사용 가능하지 않다는 것을 의미합니다.

기본 타임 라인에서 newChar으로 가려면 해당 범위로 드릴 다운해야합니다.

char_panel은 기본 타임 라인에있는 객체의 인스턴스 이름입니다. 그렇다면, 당신은 당신의 기본 타임 라인 코드에이 작업을 수행해야 할 것 : 당신은 모든를 표시해야합니다

+0

그것은 작동합니다! 대단히 감사합니다 @ 나쁜 느낌에 대해 이봐 !! :) –