질문과 답변

Extra Form
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


class Window_Base < Window
  #--------------------------------------------------------------------------
  # ● ウィンドウ内容の作成(창 내용 만들기)
  #--------------------------------------------------------------------------
  def create_contents
    contents.dispose
    if contents_width > 0 && contents_height > 0
      self.contents = Bitmap.new(contents_width, contents_height)
    else
      self.contents = Bitmap.new(1, 1)
    end
  end

위에서 보면 contents를 dispose시킨 후에 다시 비트맵을 불러내서 대입시키게 되어있는데요.
제가 궁금한 부분은, 

contents.dispose 에는 왜 self가 없고, 

self.contents = Bitmap.new(contents_width, contents_height)
self.contents = Bitmap.new(1, 1)
이 두 개에는 왜 self를 붙였는지.. 왠지 모르겠습니다.

시험삼아 dispose에 self 붙여봤더니, 동작에는 이상이 없더군요. 에러는 안 납니다.

근데 비트맵 대입시키는 두 개 코드에서 self를 떼어봤더니 dispose bitmap 에러가 납니다.
noname01.jpg

class Window_Selectable < Window_Base

  def refresh

  contents.clear

  draw_all_items

end

이 부분에서 contents.clear란 코드가 있는데, contents가 dispose 상태라 clear시킬 수 없다는 뜻 같네요.
그럼 self를 뗀 것 때문에, 비트맵 대입시키는 두 개 코드에서 비트맵이 제대로 대입되지 않았다는 건지..
싶어서, 아래와 같이 코드를 수정하고 재실행시켜보니

class Window_Base < Window

  def create_contents

    contents.dispose

    if contents_width > 0 && contents_height > 0

      contents = Bitmap.new(contents_width, contents_height)

    else

      contents = Bitmap.new(1, 1)

    end

    p contents

    p self.contents

  end

 

class Window_Selectable < Window_Base

  def refresh

    p contents

    p self.contents

    contents.clear

    draw_all_items

  end


콘솔창의 결과가 이렇네요.
 noname03.jpg

빨간 네모가 2개인 까닭은 refresh가 실행되기 전에 create_contents가 2번 실행되기 때문이고요.
일단 보시면 
p self.contents는 일정한 메모리주소(메모리주소인진 사실 잘 모릅니다만 그렇게 보여서 일단 그렇게 부를게요.)
를 나타내는 반면에,
p contents는, create_contents메소드에서는 엉뚱한 값만 가리키다가,
refresh메소드에서는 self.contents와 같은 값을 가리키고 있습니다.

결국 결과적으로,
create_contents메소드 내부에서만 
contents 와 self.contents 가 
서로 다른 놈이라는 뜻인데,
왜 이렇게 다른 놈이 된 건지 너무 궁금합니다..

혼자서 해답을 얻어보려고 노력은 해봤는데,
여기까지가 한계인가 싶어서 다시 질문 올려봅니다.
(예전 질문은 답이 없어서 삭제함..)
제발 누군가 조언을 해주시길 간곡히 바래봅니다.. 흙..

List of Articles
종류 분류 제목 글쓴이 날짜 조회 수
공지 묻고 답하기 가이드 습작 2014.06.14 12448
RMVXA 이벤트 실행 전투 실행 이안됌요 3 오오오오하군 2016.08.02 83
RMVXA 이벤트 실행 도중에 특정 위치의 문이 열리거나 닫히도록 하고 싶습니다. 4 file 안드루이드 2016.09.15 253
RMVXA 이벤트 실행 내용에 '액터 mp증가' 적용 시키는 법 좀 알려주세요. 3 kymanj 2018.03.20 89
이벤트 작성 RMVXA 이벤트 시에 그림이 반복으로 움직이면서 다음 행이나 선택지가 나오게 하는 것이 궁금합니다. file laneas 2020.08.01 122
RMVXA 이벤트 스크립트 추가로 메뉴부르기 2 준준이 2015.12.24 131
이벤트 작성 RMVXA 이벤트 생성) 바위 벽에서 밀었을 때 오류... 9 file 겜만들고싶다앙 2020.08.09 118
RMVXA 이벤트 보행그래픽 변경 질문입니다. 4 file 이엘 2013.02.12 698
RMVXA 이벤트 병렬처리후 케릭터 이동 관련 질문 2 일류 2012.05.09 2832
RMVXA 이벤트 병렬처리나 자동실행후 중단하기 2 알만툴초보입니당 2016.11.06 190
RMVXA 이벤트 반복에 대한 질문 3 file ST 2013.01.27 660
RMVXA 이벤트 반복 4 혲이 2013.12.17 923
RMVXA 이벤트 무작위이동으로 해두면 움직이다가 멈춰요 1 세인시 2014.11.05 260
RMVXA 이벤트 리젠 문제. 글쎄,왜 난 적용이 안될까? 2013.03.28 601
RMVXA 이벤트 두개를 한꺼번에 없애는 법 4 슈퍼울트라그레이트딜리셔스 2012.09.08 1095
RMVXA 이벤트 두개를 이용해 책상위 아이템을 집는법... 3 file 김으휴 2014.04.20 750
RMVXA 이벤트 되돌아가기 기능에 대해 알고 싶습니다. 2 Lockerroom 2015.10.11 137
RMVXA 이벤트 도중에 캐릭터 추가하는법, 제외하는법 알려주세요. 1 수퍼말이오 2014.10.17 317
RMVXA 이벤트 넣는 방법 4 혲이 2013.12.17 822
이벤트 작성 RMVXA 이벤트 내용 일괄 선택은 불가능한가요? 2 file zx히어로zx 2022.10.30 31
RMVXA 이벤트 내에서 현재이벤트의 ID를 얻어낼수있는 방법. 2 머그빵 2014.11.06 310
Board Pagination Prev 1 ... 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 ... 149 Next
/ 149