질문과 답변

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 Victor 스크립트의 Animated battle 관련 오류 3 file 미양 2013.02.12 578
RMVXA Victor 엔진을 활용한 animated battler 전투에서 반격 발동시에 전투가 멈추어버립니다. RAISON 2014.11.04 333
RMVXA VL 고딕 폰트를 갑자기 찾을 수 없다고 하네요 5 보드카짱 2017.05.13 1738
RMVX VLAD ABS 시스템에 관한 질문. 다이나믹로동 2011.07.09 1172
RMVX Vlad의 Vampyr SBABS에서 몬스터에게 공격모션주는 방법 질문합니다. 2 신휴이 2011.07.21 1227
RMVXA vocab을 수정해도 전투 도중의 대사가 바뀌지 않습니다 2 아브렐라 2014.08.18 715
RMVX VS 맵칩 에서 집 말이에요.. 1 file 비호 2011.07.05 1029
RMVX vs 액터 / 다양한 크기 문 2 에스테반 2011.01.07 563
RMVX vs로는 xp처럼 아오오니 같은거못만드나여? 2 크루즈 2011.02.06 708
RMVX vx + 관련해서 질문입니다. 아방스님께라고 해야할까나.. 2 자선1 2011.11.15 2209
RMVXA vx ace lite 버전은 어떤 기능이 제한되어 있는 건가요? (+한글패치 질문) 1 듀시아드 2014.07.14 853
스크립트 사용 RMVXA vx ace QTE 1 mkccip 2020.05.19 131
툴선택 VX ACE vs MV 1 뒤리 2015.12.25 290
RMVXA VX ACE [해결] yeellowyt 2017.07.16 97
VX ace 게임 번역간 잘 알 풀리는 부분에 대한 질문. 1 JBL3 2016.08.06 342
VX ace 게임 한글화 할려고 하는데요 영어 자막 대사는 어디서 바꿔야하나요? 1 file 수염광 2018.01.09 254
RMVXA vx ace 게임이 실행이 안됩니다..ㅠ file hoguhogu 2014.03.26 759
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
Board Pagination Prev 1 ... 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 ... 516 Next
/ 516