질문과 답변

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 12450
RMVXA 능력치 확장 스크립트에서 1 file shj8114 2015.06.15 164
RMVXA 능력치강화와레벨업시 커먼이벤트발생을이용해 스탯분배 레드륨 2014.10.15 390
RMVXA 능력치를 음수로 하고 싶습니다. 1 스케치 2016.02.21 163
RMVXA 능력치에 따라서 mhp 증가 4 바다의보배 2012.09.25 1170
RMVXA 능력치에 따른 NPC 등장 4 가시밭 2015.05.26 184
RMVXA 닉네임 입력칸 1 소소아린 2015.08.23 150
RMVXA 다단히트 공격시 공격마다 랜덤한 적을 공격하게 만들고 싶습니다. 1 repola 2014.04.04 616
RMVXA 다른 맵진입시 이벤트 반복 2 file xEoN 2014.10.05 452
RMVXA 다른 셀프스위치 조작 1 글쎄,왜 난 적용이 안될까? 2013.06.16 656
RMVXA 다른 이벤트의 셀프 스위치를 컨트롤 하는 스크립트가 어떻게 되나요 ㅠㅠ 1 멜랑콜리 2015.04.17 286
RMVXA 다른 컴퓨터는 스크립트 오류???? 도리 2016.10.21 140
RMVXA 다른버전은 스크립트에서 타이틀화면 게임시작 이런거 수정할수있던데 ㄷㄷ.. 1 아름다음 2013.03.23 995
RMVXA 다른분께서 만든게임을 열려면 어떻게 하는건가요~? 3 DJN 2016.06.01 784
RMVXA 다리 건너기에 관해서 2 file LOOK 2016.05.07 154
스크립트 작성 RMVXA 다시 올려봅니다.. 해상도 1280 x 720으로 하고싶어요 3 Lamiassss3 2019.04.25 2428
RMVXA 다시 플레이하면 새로운 이벤트가 발생하게 하는 방법 1 ifeve 2014.01.31 767
RMVXA 다시한번 질문합니다. Khas Awesome Light Effects 스크립트 오류에 대해서 4 file 엔리스_판테모니엄 2013.01.14 884
RMVXA 다운받은 소재 사용후 캐릭터의 움직임 멈춤 현상이 일어났습니다. 4 빼리쏭 2013.06.19 711
RMVXA 다음 공격을 강화하는 스킬 아무개 2016.12.26 105
스크립트 사용 RMVXA 다음 맵으로 넘어갈때 원경 고정 풀리게 하는법좀요 도르마무 2020.03.10 39
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