수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • 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같은 거요) 일일히 구현해야되는지..

번호 제 목 글쓴이 날짜
2700033 배경에 그라데이션을 넣으려고 하는데요.. (4) 화이티 2025-07-01
2700005 [질문] TextField 객체의 실제 높이 알아오는 방법 ? 천사의눈물 2025-07-01
2699978 FileReferenceList를 이용하여 업로드시 자꾸 실행속도가 느리다는 팝업이... (10) 데이비드 2025-06-30
2699944 자바스크립트가 많은 사이트는... (6) 희나리 2025-06-30
2699918 브라우저마다 다른 input과 텍스트 정렬 (3) 늘봄 2025-06-30
2699887 동적텍스트를 그래픽으로?? (2) 족장 2025-06-30
2699862 scope넣기 (1) 아인 2025-06-29
2699835 exe로 만드는 방법을....알려주세요.. (5) 방방 2025-06-29
2699809 롤오버할때 백그라운드 이미지로할때 alt설명은 어떻게해야하죠?..ㅠ (4) 반혈 2025-06-29
2699757 리스트뷰에 있는 내용을 랜덤으로 추출 세실 2025-06-28
2699725 JMX 질문입니다. (1) 시나브로 2025-06-28
2699695 으으아으ㅏ으ㅏ 정말미쳐버리겟네요 진달래 2025-06-28
2699665 absolute에 대해서 궁금한게 있습니다 (1) 영빈이 2025-06-28
2699629 테마 적용이 잘 안됩니다. ㅠㅜ (2) 서희 2025-06-27
2699601 html코딩 브라우져 확인 할때.. (5) 에드워드 2025-06-27
2699575 [질문] 고수님들...가르쳐주세염....renameTo에 관하여 일본드립 2025-06-27
2699547 [급]레이어보다 object태그가 우선순위가 되는 문제 (5) DevilsTears 2025-06-27
2699518 javaScript중복체크 하는법좀.. 알려주세요 (3) 비 2025-06-26
2699495 이런 탭메뉴를 뭐라고 해야 하는지 모르겠네요 (1) 들빛 2025-06-26
2699380 메뉴가 계단식으로 나타나요.. ㅠ.ㅠ (5) 스릉흔다 2025-06-25
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

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