질문과 답변

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 21162
RMVXA 데이터 베이스의 메모를 활용하는 스크립트 방법 아자아자젤 2013.06.09 607
RMXP 반짝거리는 효과 질문입니다 1 유영준짱 2013.06.15 607
RMXP 스크립트 아시는분들 이부분 해석좀 해주세요 5 EE!! 2010.10.14 608
RMVX 문자 표시 스크립트 사용시 문제. 1 file 마에르드 2011.02.05 608
RMXP 또 질문 드릴게여. 2 file Shutup!! 2011.02.12 608
RMVXA 전투 화면 질문 1 file 건전한PC방 2013.07.21 608
RMVXA 이벤트 리젠 문제. 글쎄,왜 난 적용이 안될까? 2013.03.28 608
RMVXA 전투원을 5명 이상 되게 하려면... 휘휘 2014.02.04 608
RMVX 이벤트 종료 어떻게 하죠 4 멸가 2014.05.25 608
RMVXA 키보드의 방향키나 버튼으로 그림을 다른 그림으로 바꾸기 2 흰강아지 2014.05.03 608
RMVX 아이템을 선택했을 때만 작동하게 하는 방법 1 파프리카 2014.07.21 609
RMVX 전투기 또는 헬리콥터로 스크롤식(탑뷰 또는 사이드) 게임을 만드려는데요 1 FronT 2011.01.05 609
RMVXA 이벤트 질문입니다 1 코요미 2013.05.10 609
RMVXA 게임 오버시 저장파일 삭제 7 Hamachi 2014.09.12 609
RM2k3 rpg2003rtp일문판 제대로 된것 좀 answntjs00 2014.11.02 609
RMVX 스테이터스 커스텀 스크립트 관련 질문입니다. T.C.O.L 2010.10.31 610
RMXP 능력치.. 1 포뇨포뇨포뇨 2011.01.14 610
RMVXA 창 페이드 효과를 없애는 방법이 있나요? aicarrot 2013.03.27 610
에러 해결 RMXP 알만툴 XP 한글패치 글자 오류 2 file junjuntv 2019.04.20 610
RMXP 윈도우창 위치 변경 5 file 모자리나 2018.06.09 611
Board Pagination Prev 1 ... 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 ... 518 Next
/ 518