질문과 답변

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 메뉴창을 띄우면 캐릭터 이름 옆에 직업이 뜨는 걸 칭호로 바꾸고 싶습니다. 나라시 2016.04.15 112
RMVXA RPGVXAce에는 원래 타일셋이 4개 뿐인가요?? 3 비두 2016.04.15 402
RMVXA 마우스가 이벤트에 반응을 하지 않습니다 1 두솔 2016.04.15 121
RMVXA 대사창 일부분의 폰트를 크게하는 방법을 알고싶습니다. 2 페돗p 2016.04.14 173
RMVXA 타이머의 위치를 게임 도중에 바꾸는 방법 프리마리모 2016.04.13 156
RMVXA 단축키 스크립트 만드는 것좀 알려주실분 계신가요 3 은현 2016.04.10 145
RMVXA 벽을 세울 때 카펫이 잘리는 문제 2 그런가 2016.04.09 108
RMVXA 옷입히기에서 옷을 셀단위가 아닌 옷 자체로 입력이 불가능한가요? 1 클로로벤젠 2016.04.09 232
RMVXA 메뉴창에서 캐릭터 이름 옆에 표기되는 걸 직업이 아닌 칭호로 바꾸고 싶습니다. file 나라시 2016.04.09 221
RMVXA 데이터베이스의 액터/아이템/스킬 최대갯수.... 1 슈아ll 2016.04.09 112
RMVXA 배경음 설정할때 질문이요 1 AccelHacker 2016.04.08 6435
RMVXA 그림삽입 띄운채로 캐릭터 이동이 안되요 4 file Leonis 2016.04.08 213
RMVXA 선택지에 커먼이벤트 이름 값을 넣고 싶습니다! 4 프리마리모 2016.04.06 145
RMVXA 레벨업시 커먼이벤트 발동 스크립트 관련 질문있습니다. 6 프리마리모 2016.04.05 204
RMVXA 스킬이나 아이템 등 데이터베이스에서 엔터를 치면 인게임에서 음표가 뜹니다. 3 file 프리마리모 2016.04.05 168
RMVXA 스크립트 적용시에 일본어가 뜨는 문제 2 나라시 2016.04.05 136
RMVXA vx ace에서 파티원을 정해진 직업(스텟,그래픽 등)으로 변경하고 싶을때... 5 슈아ll 2016.04.05 174
RMVXA 게임 BGM이 안들려요.. 버섯수프 2016.04.05 91
RMVXA 잃은 능력치에 비례해서 데미지 증가하는법 (데미지 공식) 4 테오드라 2016.04.04 206
RMVXA 몬스터마다 특정한 순서대로 스킬.. 2 JobSangIn 2016.04.03 131
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