질문과 답변

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 12393
RMVX 필드에서 돌아다니는 몬스터와 접촉하면 2 헤카트 2011.01.04 599
RMVX 도움의 손길좀요... ㅠ0ㅠ 2 구운사과 2011.01.11 599
RMXP 또 질문 드릴게여. 2 file Shutup!! 2011.02.12 599
RMVXA 특정 맵 들어가면 어두워지는 거.. 1 물달이 2014.06.15 599
RMXP 반짝거리는 효과 질문입니다 1 유영준짱 2013.06.15 599
RMVXA Window_Base클래스 create_contents메소드에서의 질문(contents != self.contents ???) file 일단 2014.01.23 599
RMXP 미니맵 스위치 제발좀 도와주세요 4 황제님 2010.10.08 600
RMVX 외국사이트 스크립트에서 code라고 따로 창에 있는거 쓰려면 어떻게 해야하나요 2 간파더 2010.11.30 600
RMVX 능력치 상승 스킬에서 1 일라이트 2010.12.08 600
RMVX 간단한 스크립트 질문입니다. 5 비첼 2014.01.03 600
RMVX 이벤트 종료 어떻게 하죠 4 멸가 2014.05.25 600
RMVX 제한시간 설정법... 1 뉴리키 2014.05.08 601
RMVX 원거리 액알에 대한 것 1 광우병 멧돼지 2011.01.06 601
사이트 이용 쓰레드 라는 링크에 들어가도 아무런 링크가없는데 못쓰는건가요? 4 바크지누크 2014.06.08 601
RMVXA 이벤트 질문입니다 1 코요미 2013.05.10 601
RMVXA 창 페이드 효과를 없애는 방법이 있나요? aicarrot 2013.03.27 601
RMVXA 이벤트 리젠 문제. 글쎄,왜 난 적용이 안될까? 2013.03.28 601
RMVX 스크립트 오류 재질문 file 은색바람 2013.02.04 601
RMXP 캐릭터사라지게하는법 5 file 안녕포럽아 2014.04.18 601
RMVX TileE부분에 있는 맵칩이 전부 안보입니다 file Zombang 2014.08.07 601
Board Pagination Prev 1 ... 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 ... 516 Next
/ 516