질문과 답변

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 12392
RMVXA VX ACE 메세지창 변화 못시킬까요... 4 모식스 2013.12.21 980
RMVXA VX Ace 메뉴창을 변경하고 싶습니다. 1 히나나이 2013.07.02 1106
RMVXA vx ace 맵타일 적용 2 file 북조선토종한우 2017.02.26 194
RMVX vx ace 맵칩이나 기타등등 찾다가.. 1 글쎄,왜 난 적용이 안될까? 2012.10.11 1420
RMVXA vx ace 맵이 짤려보입니다 3 file 소울상 2013.08.17 1195
RMVXA VX ACE 마우스 스크립트 15 비비드 2012.08.04 1471
기타 vx ace 를 하는대 얼굴스킨 만드는법이 1 file 늑대고양이 2013.09.01 1269
RMVXA VX ACE 런타임패키지 구하는법 1 라니팝BJ 2012.01.03 6442
RMVXA VX ACE 동영상 재생이 않됨니다. 5 file MisakaSisterse 2013.07.27 1044
RMVXA VX Ace 대화창에 있는 그림 바꾸는 법 어떡해 해야 하나요?? 3 file Noha 2019.07.07 343
RMVXA VX ACE 네트워크플레이(멀티플레이)하는법 좀 가릊쳐주세요 ㅠ 4 카로 2012.11.03 1132
RMVXA vx ace 기본스크립트 Window_Command의 분석 중 일부 질문.. 2 일단 2013.07.19 937
RMVXA VX ACE 그래픽을 암호화 시키고 싶습니다. 스리아씨 2013.10.26 1210
RMVXA vx ace 계산식 질문 Tine 2016.07.17 121
RMVXA vx ace 게임이 실행이 안됩니다..ㅠ file hoguhogu 2014.03.26 759
VX ace 게임 한글화 할려고 하는데요 영어 자막 대사는 어디서 바꿔야하나요? 1 file 수염광 2018.01.09 254
VX ace 게임 번역간 잘 알 풀리는 부분에 대한 질문. 1 JBL3 2016.08.06 342
RMVXA VX ACE [해결] yeellowyt 2017.07.16 97
툴선택 VX ACE vs MV 1 뒤리 2015.12.25 290
스크립트 사용 RMVXA vx ace QTE 1 mkccip 2020.05.19 131
Board Pagination Prev 1 ... 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 ... 516 Next
/ 516