질문과 답변

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 12447
Wolf RPG Tool 한글패치 1 file 카츄사 2015.05.31 211
기타 wolf rpg maker, 플래그 질문있습니다. 2 고슴도치가족 2018.11.16 57
RMVX Window_BattleFaceStatus Ver.1.01 스크립트 사용 질문입니다. 2 니노미야 2011.10.01 1505
RMVXA Window_Base클래스 create_contents메소드에서의 질문(contents != self.contents ???) file 일단 2014.01.23 599
RM2k3 window8.1에서 알만툴 2003 실행해서 프로젝트만들기하면.. 1 지망생유저 2015.06.25 217
RMVX window7 연결프로그램 2 푸른초원 2011.10.25 2242
RMXP Win32API 사용법 3 JACKY 2013.06.06 1431
RMVX WGB배틀 시스템 오류 입니다 도와주세요 ㅠㅠ file 왕자 2011.01.06 421
기타 RMMV webm 동영상은 투명배경이 안되나요? hurakan 2021.02.18 430
기타 기타 wasd로 이동하면 결정키랑 취소키는 어디가 편한가요? 3 무명시절 2022.02.11 267
RMVXA wait의 프레임 수를 실수로 할 수 있을까요? 2015.09.22 120
RMVX vx툴이 예기치 않은 형식이라면서 안됩니다 ㅠㅠ RPGvvxx 2010.12.12 642
기본툴 사용법 RMVX vx툴에서 후레쉬사용 효과를 주고싶어요 룡기사 2019.06.19 101
RMVX VX턴제 전투 쿨타임 rpg덕후 2014.01.06 922
RMVX VX킬떄마다 이상한창이뜨네요;; file 언제나기쁨 2011.01.19 439
RMVX vx캐릭터칩 수정하는법 1 234324 2011.08.29 2892
RMVX vx캐릭터칩 1 ㄹㅇㄴㄹㅇㄴㄹz 2012.05.19 2076
RMVX vx캐릭터사이즈 3 file 박주찬 2011.07.20 1097
RMVX VX캐릭터를 집어 넣었는데 캐릭터 주위배경이 이상하네요. 1 93012 2011.06.28 924
RMXP VX캐릭터를 XP캐릭터로 전환하는 방법 (또는 2003 캐릭터를 XP로) 2 KimRocial 2012.10.13 1329
Board Pagination Prev 1 ... 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 ... 516 Next
/ 516