질문과 답변

Extra Form
  #--------------------------------------------------------------------------
  # ● 選択項目のコマンドデータを取得(선택된 항목 대한 명령 데이터를 검색)
  #--------------------------------------------------------------------------
  def current_data
    index >= 0 ? @list[index] : nil
  end
  #--------------------------------------------------------------------------
  # ● 選択項目の有効状態を取得
  #--------------------------------------------------------------------------
  def current_item_enabled?
    current_data ? current_data[:enabled] : false
  end
  #--------------------------------------------------------------------------
  # ● 選択項目のシンボルを取得(선택 항목의 기호를 가져옵니다)
  #--------------------------------------------------------------------------
  def current_symbol
    current_data ? current_data[:symbol] : nil
  end



1. current_data 메소드 정의 중 index라는 글자가 보입니다. 이게 뭔가해서 p index; p index.class라는 명령어를 임의로 삽입하여 알아보니 Fixnum클래스의 오브젝트이며 그 값이 커서 위치를 가리키고 있다는 사실을 알았습니다. 근데 이 값이 어디서부터 왔을까 검색해보니, 아마도 

class Window_Selectable < Window_Base
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_reader   :index                    # カーソル位置(커서 위치)
에서 온 거 같긴 합니다만, 이 Window_Selectable 클래스의 인스턴스 변수인 index가 저 위의 current_data 메소드에 쓰인 index와 일치하는 건가요? 만약 일치하지 않는다면, current_data 내의 index는 대체 어디에서 값을 입력받고 있는 건가요? 만약 일치한다면, 다른 클래스 내의 인스턴스 변수를 저런 식으로 사용하는 게 가능한 건가요? 어떤 클래스의 인스턴스 변수를 쓰려면,
a=Window_Selectable.new
a.index
이런 식으로 사용해야하는 거 아닌가요.

2.  def current_symbol
    current_data ? current_data[:symbol] : nil
   end
이 부분에서 current_data 메소드가 참의 값을 리턴할 경우, current_symbol는 최종적으로 current_data[:symbol]를 리턴한다는 의미라는 건 알겠습니다. 근데 대괄호가 쓰인 걸보니 current_data가 배열 오브젝트가 아닌가 싶은데, current_data라는 이름의 배열 오브젝트가 선언된 곳이 아무리 찾아봐도 없네요. 그리고  [:symbol]은 대체 무슨 의미인지 모르겠습니다. 콘솔창으로 확인해보니, 위의 메소드는 윈도우 상에서 결정키로 커맨드를 선택, 실행했을 때 실행되던데요. 그렇다면 리턴되어야하는 심볼이 각 커맨드마다 정해져있는 거 아닌가요? 아이템 커맨드를 선택했다면 :item, 저장 커맨드를 선택했다면 :save 이런 식으로요. 근데 이건 그냥 :symbol을 리턴해버리니, 이 동작이 이후에 어떻게 본래의 심볼들하고 연결되는지 모르겠습니다. 

알려주시면 정말 감사하겠습니다.
Comment '2'
  • profile
    습작 2013.07.20 22:06

    1.

    class Window_Command < Window_Selectable


      위와같이 Window_Command는 Window_Selectable를 상속했기 때문에 재정의되지 않은 메소드에 대해서는 그대로 이어받습니다. Window_Command에서의 index는 Window_Selectable의 것이 맞습니다.


    a=Window_Selectable.new
    a.index

      Window_Command에서 Window_Selectable의 내용을 사용하는 것이므로 위와 같이 사용하는 것과는 별개의 이야기라고 할 수 있습니다.


    2.

      def current_symbol

        current_data ? current_data[:symbol] : nil

      end


      def current_data

        index >= 0 ? @list[index] : nil

      end


      def add_command(name, symbol, enabled = true, ext = nil)

        @list.push({:name=>name, :symbol=>symbol, :enabled=>enabled, :ext=>ext})

      end


      위 내용을 쭉 보시면 알 수 있듯이 current_symbol는 인스턴스 변수 @list 배열의 현재 index에 위치한 해쉬에서 키값이 :symbol인 것을 가리키는 것을 알 수 있습니다.


    current_symbol

    current_data[:symbol]


    @list[index][:symbol]


    {:name=>name, :symbol=>symbol, :enabled=>enabled, :ext=>ext}

     

      커맨드 추가할때 입력했던 :item, :save 등과 :symbol는 모두 같은 심벌이긴 합니다만, 이것들은 키값이 아닌 :symbol이라는 이름의 키값에 대응하는 것들이기 때문에 값을 찾지 못한 것이라고 할 수 있습니다.


      아무쪼록 도움이 되었길 바랍니다.^^

  • ?
    일단 2014.01.15 06:18

    제가 답변을 확인하지 못해서 죄송합니다.
    그리고 답변 달아주셔서 감사합니다.

    제 기억으로는 아마 스스로 해결해서 답변이 있는지 없는지조차 확인하지 않은 거 같네요.

    달아주신 자세한 답변이,

    스크립트를 공부하시는 다른 분들에게 도움이 될 것이라고,
    분명히 생각합니다.


List of Articles
종류 분류 제목 글쓴이 날짜 조회 수
공지 묻고 답하기 가이드 습작 2014.06.14 12393
RMVXA VL 고딕 폰트를 갑자기 찾을 수 없다고 하네요 5 보드카짱 2017.05.13 1743
RMVXA vocab을 수정해도 전투 도중의 대사가 바뀌지 않습니다 2 아브렐라 2014.08.18 715
RMVXA vx ace lite 버전은 어떤 기능이 제한되어 있는 건가요? (+한글패치 질문) 1 듀시아드 2014.07.14 853
스크립트 사용 RMVXA vx ace QTE 1 mkccip 2020.05.19 131
RMVXA VX ACE [해결] yeellowyt 2017.07.16 97
RMVXA vx ace 게임이 실행이 안됩니다..ㅠ file hoguhogu 2014.03.26 760
RMVXA vx ace 계산식 질문 Tine 2016.07.17 121
RMVXA VX ACE 그래픽을 암호화 시키고 싶습니다. 스리아씨 2013.10.26 1210
RMVXA vx ace 기본스크립트 Window_Command의 분석 중 일부 질문.. 2 일단 2013.07.19 937
RMVXA VX ACE 네트워크플레이(멀티플레이)하는법 좀 가릊쳐주세요 ㅠ 4 카로 2012.11.03 1132
RMVXA VX Ace 대화창에 있는 그림 바꾸는 법 어떡해 해야 하나요?? 3 file Noha 2019.07.07 343
RMVXA VX ACE 동영상 재생이 않됨니다. 5 file MisakaSisterse 2013.07.27 1044
RMVXA VX ACE 런타임패키지 구하는법 1 라니팝BJ 2012.01.03 6442
RMVXA VX ACE 마우스 스크립트 15 비비드 2012.08.04 1471
RMVXA vx ace 맵이 짤려보입니다 3 file 소울상 2013.08.17 1196
RMVXA vx ace 맵타일 적용 2 file 북조선토종한우 2017.02.26 194
RMVXA VX Ace 메뉴창을 변경하고 싶습니다. 1 히나나이 2013.07.02 1106
RMVXA VX ACE 메세지창 변화 못시킬까요... 4 모식스 2013.12.21 980
RMVXA VX ace 몬스터 도감 스크립트 없나요 ㅠㅠ 1 정말귀인★ 2016.01.26 185
RMVXA vx ace 무기에 격 넣기.. 크런키맛아듀크림 2016.07.16 74
Board Pagination Prev 1 ... 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 ... 149 Next
/ 149