질문과 답변

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 19708
RMXP 이 스크립트를 사용하는 방법을 가르쳐주세요 10 이룩 2014.01.24 443
RMVXA 플레이어가 이벤트에 접촉할수 있게 하는 방법좀 알려주세요. 10 file 크로마티안 2014.01.24 980
RMVX 게임 내에서 저녁을 표현하는 방법 2 마런마 2014.01.23 671
RpgXp 한글 깨짐 현상 2 file Teodra 2014.01.23 2374
RMVXA 다이얼 링 메뉴 스크립트에 대해서 질문드려도 될까요? 쿠크엔츠 2014.01.23 709
RMVX 캐릭터 얼굴 그래픽을 설정하는데 3 악익이 2014.01.23 640
RMVXA Window_Base클래스 create_contents메소드에서의 질문(contents != self.contents ???) file 일단 2014.01.23 612
RMVXA 오브젝트 문제 8 file RedPhoenix 2014.01.23 587
RMVXA 동영상 인코딩문제 1 파닥이 2014.01.23 601
RMVXA 게임 이어할적의 이벤트 활성화 문제 .. 2 file 오렌지캬라멜 2014.01.23 602
RMXP RPG XP 칩 적용 어떻게 하나요. 2 훤>선 2014.01.23 1093
RMVX 게임시작할떄 3 아쳐 2014.01.22 744
RMXP 프로젝트 안에 BGM이 재생되지 않습니다 4 이룩 2014.01.22 750
RM2k3 아이템을 기억한 위치 제외하고 사용하면 게임 오버하는 이벤트 1 file 윌리스 2014.01.22 903
RMVX vx게임 일본어로 되어있는데 한글화 하는법쫌.... 4 Aroma 2014.01.22 911
vx ace 한글화후 스크립트 오류 4 file 이욜저욜푸욜 2014.01.22 1032
RMVXA [해결]전투 중 액터의 이미지가 표시되지 않습니다. CP's Battle Engine 스크립트 모드 3 7 file 풍지 2014.01.22 942
RMVXA VXA에서 파티 리더 인식을 시키려면 어떻게? 2 셀렉션 2014.01.22 779
RMVX 엔딩을 본 후 타이틀 바뀌게 하는 스크립트 월유라 2014.01.22 869
RMVXA 대화 자동 넘기기하는 법 좀 알려주세요 4 슈퍼울트라그레이트딜리셔스 2014.01.22 864
Board Pagination Prev 1 ... 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 ... 518 Next
/ 518