질문과 답변

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 50294
RMVXA rpg vx ace 심플 맵이 사용이 않되요. 6 file 효린kg 2014.01.28 1119
RMVX 직접디자인한캐릭터 보형그래픽 8 물고기이뻐 2014.01.27 812
RMVX 대화를 걸고 다시한번대화하면 게임오버 하는법 4 아쳐 2014.01.27 791
RMVXA 스킬 사용효과에 통상공격100%의 기능? 3 은잔 2014.01.27 1161
기타 모바일로 게임 할수있는건가요 3 핑구 2014.01.27 891
RMXP 선택지의 갯수를 늘릴 수 있나요? 2 shsQk 2014.01.27 828
RMVX 어둠속불 사진 4 file VX입문했긩 2014.01.26 946
RMVX 게임의 암호화 후 압축을 풀려고하면 game.rgss2a를 풀때 응답없음이 됩니다. 1 하얀악어 2014.01.26 876
RMVX 마차 내부를 재현하기위해 화면의 쉐이크를 지속적으로 사용하고싶습니다. 2 하얀악어 2014.01.26 720
RMVXA 128x192도트 설정 질문입니다. 2 이기피어 2014.01.26 810
RMXP SRPG 제작 시스템 "GubiD's Tactical Battle System"질문이요! 2 file Blur 2014.01.26 948
RMVXA 커먼 이벤트 실행 2 닉네임생각이안남 2014.01.26 888
RMVX 서랍 뒤지기 4 file VX입문했긩 2014.01.26 1028
기타 VX(ACE) RTP 페이스칩 표정변화 다 가지고 계신 분..? 2 file sudoxe 2014.01.26 1101
RMVXA 허걱님의 전체키 입력 확장 스크립트 오류 해결방법 문의 3 file 명란젓 2014.01.26 1339
RMVXA 타일셋 중 어떤 건 바닥 위에 나오고 어떤건 기존 바닥을 대체해버립니다. 6 file REMAIN 2014.01.26 968
RMVXA 배틀 스크립트 같은데.. 어떤 스크립트인지 알고 싶습니다. 5 file RedPhoenix 2014.01.25 759
RMVXA 장비 세트의 부가 효과 주는 법 4 닉네임생각이안남 2014.01.25 709
RMVX RPG VX 간단한 질문.. 1 다지류 2014.01.25 631
RMXP 특정 아이템의 소지수 제한 2 shsQk 2014.01.25 767
Board Pagination Prev 1 ... 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 ... 518 Next
/ 518