수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

인스턴스 삭제 처리하는 법?

수리

2023.04.01

PV3D를 이용하여 간단한 게임을 구현하고 있는데 문제가 있어서 질문 올려요

일단 기본 형태가 간단하게 보면 이렇습니다.
A클래스(Document Class) extends Sprite
B클래스(GamePlay Class) extends BasicView

A에는 메뉴가 깔려있고 Start를 누르면
gamePlay = new B(this);
addChild(gamePlay);
이런식으로 실제 플레이 부분을 불러옵니다.

B에는 메인으로 가는 버튼이 있고 그걸 누르면
다시 A클래스의 init()메소드를 호출합니다.(init()에선 메뉴화면 깔고 이벤트리스너 등록만 함)
B의 생성자 인자가 A클래스 주소니까 저 값을 넣은 변수.init() 으로 해서 A의 인스턴스의 init()을 호출하죠

여기까지 해보고 테스트를 하니 B에서 메인 누르면 다시 돌아가는 것까지 잘 됩니다.
그리고 Start를 누르면 다시 시작되는 것도 되는데, 문제는
이전의 B 인스턴스가 그대로 남아있다는 것입니다.
전 gamePlay = new B(this); 이 부분에서 기존의 것을 지우고 새로 만든다라고 생각을 했는데 그게 아니었나 봅니다.

그래서 질문은

1. 저런 경우에도 인스턴스 삭제를 꼭 해줘야 되는 게 맞나요?
한 멤버번수에 새로 생성하여 넣는 건데도 어째 예전 께 남아있는지..

2. 삭제해야된다면 어떤 기준으로 해야되는지요?
DisplayObject류만 하면 되는 걸까요?(저같은 경우 DisplayObject3D류도 있겠군요.)
어떤 기준으로 하는 건지..;

3. 자식 인스턴스들을 쉽게 삭제하는 방법이 있나요?
일일히 부모.removeChild(자식) 한 후 자식 = null; 이런식으로만 해야되나요?
중복 for돌려가면서 자식들 찾아서 지우게 할순 있겠지만 이것도 좀 아닌것 같아서..
그냥 최상위 객체만 null 줘버려도 자식들은 남나요ㅡㅡ?쉽게 요약하면
gamePlay= new B(); 를 반복하면 B클래스의 3D Object가계속 늘어간다는 거죠. 덮어씌워지는 게 아니라..

쿡북 책 하나 있는데 전혀 언급이 없네요
답변 부탁드립니다~

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 후예

    1. 당근겹쳐지면 안되죠...겹쳐지게 된다면..똑같은 객체를 여러개 만들고 싶을때...쓸수가 없겠죠;;;

    2. 디스플레이오브젝트도 지우셔야하구...타이머 같은것도 지우세요...화면상에 addChild 안되어있어도....어디선가 참조하고 있으면 안지워질꺼에요..(그리고 DisplayObject3D 도 아마 DisplayObject를 상속받아서 만든걸껍니다...)

    3.제가 알기론 자식값을 어디선가 참조하고 있으면 GC가 안날린다는걸로 알고 있습니다..(

  • 알찬마루

    1. 삭제가 안됩니다. 고로 변수에 다른 값을 대입하기전에 충분한 처리(삭제등)을 해줘야 합니다.
    변수에 새로운 값을 넣는다고 해서 전 값 자체가 없어지지 않습니다(저 경우 레퍼런스 참조임, 스트링, 인트 뭐 이런거만 값 참조입니다)

    2. 화면상 보이는거라면 removeChild 해주시면 되고 기타 일반 클래스나 어레이 같은 것들은 기존 하시던대로 변수에 다른값 넣고 사용하시다보면 gc가 알아서 지워줍니다
    단, 디스플레이 오브젝트가 스테이지에 올라가

  • 유희

    아 추가로, 플래시엔 플렉스의 Panel 같은 UI클래스는 없나요? Dialog 하나 띄울려는데 (자바스크립트로 따지면 Confirm이나 Alert같은 거요) 일일히 구현해야되는지..

번호 제 목 글쓴이 날짜
2696792 Doctype 문의 떠나간그녀 2025-06-02
2696683 컴파일된 클립 질문 드립니다. 흰추위 2025-06-01
2696656 C질문요 (4) 블랙캣 2025-05-31
2696504 플래시 위에 div 올리기 (5) 큰꽃늘 2025-05-30
2696458 제가 만든 소스 한번 봐주시고 수정 할 꺼 있으면 말해주세요. (실행은 되지만 깜빡거리네요) 이플 2025-05-29
2696434 퍼센트 레이아웃 질문인데요.. 나츠 2025-05-29
2696372 %=open_main%, %=open_sub% 가 뭘까요? (9) 행복녀 2025-05-29
2696347 콘솔 프로그램 질문 상큼한캔디 2025-05-28
2696320 c언어 scanf 함수를 이요해 문자열 입력 받을 시 질문 있습니다. 슬아라 2025-05-28
2696292 익스플로러9이상에서만 이상한 보더가 보이는데 삭제할수 있나요? 망고 2025-05-28
2696263 프로그래밍 공부시작 질문 (6) 진이 2025-05-28
2696206 SK2의 플래시를 밴치마킹하려고하는데요.. (1) 비내리던날 2025-05-27
2696179 ie7에서 사라지지가 않네요. (2) 빛길 2025-05-27
2696150 div에 스크롤 생기게 하려면... (2) 에드가 2025-05-27
2696123 자료구조론 공부중인데 김자영 2025-05-26
2696094 exe 파일 제철 2025-05-26
2696043 제이쿼리 .scroll() 관련 질문드립니다 이거이름임 2025-05-26
2695984 마크업상으로 하단에 있으나 우선적으로 이미지파일을 다운로드받는 방법 (1) 들꿈 2025-05-25
2695934 tr 속성값 (9) 새 2025-05-25
2695905 ASP로 개발됐을 때 css가 달라져요 ㅠㅠ (4) 슬아라 2025-05-24
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com