Project1

标题: 求助,怎么把选择项从第2行开始 [打印本页]

作者: yang1zhi    时间: 2016-3-13 12:59
标题: 求助,怎么把选择项从第2行开始

RUBY 代码复制
  1. class Game_Actor
  2.   MAX_SKILL_NUM = 2
  3.   alias :rsn_learn_skill :learn_skill
  4.   def learn_skill(skill_id)
  5.     rsn_learn_skill(skill_id)
  6.     if @skills.size > MAX_SKILL_NUM
  7.       @window_rsn = Window_Forget_Skill.new(120 , 200 , 240 , 160 , self)
  8.       loop do
  9.         Graphics.update
  10.         Input.update
  11.         @window_rsn.update
  12.         break if @window_rsn.disposed?
  13.       end
  14.     end
  15.   end
  16. end
  17. class Window_Forget_Skill < Window_Selectable
  18.   #--------------------------------------------------------------------------
  19.   # ● 初始化对像
  20.   #     x      : 窗口 X 座标
  21.   #     y      : 窗口 Y 座标
  22.   #     width  : 窗口宽度
  23.   #     height : 窗口高度
  24.   #     actor  : 角色
  25.   #--------------------------------------------------------------------------
  26.   def initialize(x, y, width, height, actor)
  27.     super(x, y, width, height)
  28.     @actor = actor
  29.     @column_max = 1
  30.     self.index = 0
  31.     refresh
  32.   end
  33.   #--------------------------------------------------------------------------
  34.   # ● 获取技能
  35.   #--------------------------------------------------------------------------
  36.   def skill
  37.     return @data[self.index]
  38.   end
  39.  
  40.  
  41.   #--------------------------------------------------------------------------
  42.   # ● 刷新
  43.   #--------------------------------------------------------------------------
  44.   def refresh
  45.     if self.contents != nil
  46.       self.contents.dispose
  47.       self.contents = nil
  48.     end
  49.     @data = []
  50.     for id in @actor.skills
  51.       @data.push($data_skills[id])
  52.     end
  53.     @item_max = @data.size
  54.     if @item_max > 0
  55.       self.contents = Bitmap.new(width - 32, @item_max * 32)
  56.       self.contents.draw_text(0, 0, 120, 32, @actor.name)
  57.       for i in 0...@item_max
  58.         draw_item(i)
  59.       end
  60.     end
  61.   end
  62.   #--------------------------------------------------------------------------
  63.   # ● 描绘项目
  64.   #     index : 项目编号
  65.   #--------------------------------------------------------------------------
  66.   def draw_item(index)
  67.     x = 4
  68.     y = index * 32
  69.     skill = @data[index]
  70.     draw_item_name(skill, x, y)
  71.   end
  72.   alias :rsn_update :update
  73.   def update
  74.     rsn_update
  75.     if Input.trigger?(Input::B)
  76.       $game_system.se_play($data_system.buzzer_se)
  77.       return
  78.     end
  79.     if Input.trigger?(Input::C)
  80.       $game_system.se_play($data_system.decision_se)
  81.       @actor.forget_skill(skill.id)
  82.       self.dispose
  83.       return
  84.     end
  85.   end
  86. end

作者: 夜狠简单    时间: 2016-3-13 13:53
def initialize(x, y, width, height, actor)
    super(x, y, width, height)
    @actor = actor
    @column_max = 1
    self.index = 1
    refresh
  end
试试
作者: cinderelmini    时间: 2016-3-13 14:12
本帖最后由 cinderelmini 于 2016-3-13 21:48 编辑
  1. class Game_Actor
  2.   MAX_SKILL_NUM = 2
  3.   alias :rsn_learn_skill :learn_skill
  4.   def learn_skill(skill_id)
  5.     rsn_learn_skill(skill_id)
  6.     if @skills.size > MAX_SKILL_NUM
  7.       @window_rsn = Window_Forget_Skill.new(120 , 200 , 240 , 160 , self)
  8.       loop do
  9.         Graphics.update
  10.         Input.update
  11.         @window_rsn.update
  12.         break if @window_rsn.disposed?
  13.       end
  14.     end
  15.   end
  16. end

  17. class Window_Forget_Skill < Window_Selectable
  18.   #--------------------------------------------------------------------------
  19.   # ● 初始化对像
  20.   #     x      : 窗口 X 座标
  21.   #     y      : 窗口 Y 座标
  22.   #     width  : 窗口宽度
  23.   #     height : 窗口高度
  24.   #     actor  : 角色
  25.   #--------------------------------------------------------------------------
  26.   def initialize(x, y, width, height, actor)
  27.     super(x, y, width, height)
  28.     @actor = actor
  29.     @column_max = 1
  30.     self.index = 0
  31.     refresh
  32.   end
  33.   #--------------------------------------------------------------------------
  34.   # ● 获取技能
  35.   #--------------------------------------------------------------------------
  36.   def skill
  37.     return @data[self.index]
  38.   end


  39.   #--------------------------------------------------------------------------
  40.   # ● 刷新
  41.   #--------------------------------------------------------------------------
  42.   def refresh
  43.     if self.contents != nil
  44.       self.contents.dispose
  45.       self.contents = nil
  46.     end
  47.     @data = []
  48.     for id in @actor.skills
  49.       @data.push($data_skills[id])
  50.     end
  51.     @item_max = @data.size
  52.     if @item_max > 0
  53.       self.contents = Bitmap.new(width - 32, (@item_max+1) * 32) # item_max加一行
  54.       self.contents.draw_text(0, 0, 120, 32, @actor.name)
  55.       for i in 0...@item_max
  56.         draw_item(i)
  57.       end
  58.     end
  59.   end
  60.   
  61.   #--------------------------------------------------------------------------
  62.   # ● 描绘项目
  63.   #     index : 项目编号
  64.   #--------------------------------------------------------------------------
  65.   def draw_item(index)
  66.     x = 4
  67.     y = (index+1) * 32  # index加1
  68.     skill = @data[index]
  69.     draw_item_name(skill, x, y)
  70.   end
  71.   
  72.   alias :rsn_update :update
  73.   def update
  74.     rsn_update
  75.     if Input.trigger?(Input::B)
  76.       $game_system.se_play($data_system.buzzer_se)
  77.       return
  78.     end
  79.     if Input.trigger?(Input::C)
  80.       $game_system.se_play($data_system.decision_se)
  81.       @actor.forget_skill(skill.id)
  82.       self.dispose
  83.       return
  84.     end
  85.   end
  86.   
  87.   #--------------------------------------------------------------------------
  88.   # ● 更新光标矩形
  89.   #--------------------------------------------------------------------------
  90.   def update_cursor_rect
  91.     # 光标位置不满 0 的情况下
  92.     if @index < 0
  93.       self.cursor_rect.empty
  94.       return
  95.     end
  96.     # 获取当前的行
  97.     row = (@index+1) / @column_max  #(index以进一位算)
  98.     # 当前行被显示开头行前面的情况下
  99.     if row < self.top_row
  100.       # 从当前行向开头行滚动
  101.       self.top_row = row
  102.     end
  103.     # 当前行被显示末尾行之后的情况下
  104.     if row > self.top_row + (self.page_row_max - 1)
  105.       # 从当前行向末尾滚动
  106.       self.top_row = row - (self.page_row_max - 1)
  107.     end
  108.     # 计算光标的宽度
  109.     cursor_width = self.width / @column_max - 32
  110.     # 计算光标坐标
  111.     #(坐标都以进一位算)
  112.     x = (@index+1) % @column_max * (cursor_width + 32)
  113.     y = (@index+1) / @column_max * 32 - self.oy
  114.     # 更新光标矩形
  115.     self.cursor_rect.set(x, y, cursor_width, 32)
  116.   end
  117.   
  118. end
复制代码
也许能成……




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1