Project1

标题: 这个脚本的refersh都没有调用,他是怎么实现刷新的 [打印本页]

作者: kklt    时间: 2018-10-3 17:40
标题: 这个脚本的refersh都没有调用,他是怎么实现刷新的
RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Window_ItemList
  4. #------------------------------------------------------------------------------
  5. #  物品画面中,显示持有物品的窗口。
  6. #==============================================================================
  7.  
  8. class Window_ItemList < Window_Selectable
  9.   #--------------------------------------------------------------------------
  10.   # ● 初始化对象
  11.   #--------------------------------------------------------------------------
  12.   def initialize(x, y, width, height)
  13.     super
  14.     @category = :none
  15.     @data = []
  16.   end
  17.   #--------------------------------------------------------------------------
  18.   # ● 设置分类
  19.   #--------------------------------------------------------------------------
  20.   def category=(category)
  21.     return if @category == category
  22.     @category = category
  23.     refresh
  24.     self.oy = 0
  25.   end
  26.   #--------------------------------------------------------------------------
  27.   # ● 获取列数
  28.   #--------------------------------------------------------------------------
  29.   def col_max
  30.     return 2
  31.   end
  32.   #--------------------------------------------------------------------------
  33.   # ● 获取项目数
  34.   #--------------------------------------------------------------------------
  35.   def item_max
  36.     @data ? @data.size : 1
  37.   end
  38.   #--------------------------------------------------------------------------
  39.   # ● 获取物品
  40.   #--------------------------------------------------------------------------
  41.   def item
  42.     @data && index >= 0 ? @data[index] : nil
  43.   end
  44.   #--------------------------------------------------------------------------
  45.   # ● 获取选择项目的有效状态
  46.   #--------------------------------------------------------------------------
  47.   def current_item_enabled?
  48.     enable?(@data[index])
  49.   end
  50.   #--------------------------------------------------------------------------
  51.   # ● 查询列表中是否含有此物品
  52.   #--------------------------------------------------------------------------
  53.   def include?(item)
  54.     case @category
  55.     when :item
  56.       item.is_a?(RPG::Item) && !item.key_item?
  57.     when :weapon
  58.       item.is_a?(RPG::Weapon)
  59.     when :armor
  60.       item.is_a?(RPG::Armor)
  61.     when :key_item
  62.       item.is_a?(RPG::Item) && item.key_item?
  63.     else
  64.       false
  65.     end
  66.   end
  67.   #--------------------------------------------------------------------------
  68.   # ● 查询此物品是否可用
  69.   #--------------------------------------------------------------------------
  70.   def enable?(item)
  71.     $game_party.usable?(item)
  72.   end
  73.   #--------------------------------------------------------------------------
  74.   # ● 生成物品列表
  75.   #--------------------------------------------------------------------------
  76.   def make_item_list
  77.     @data = $game_party.all_items.select {|item| include?(item) }
  78.     @data.push(nil) if include?(nil)
  79.   end
  80.   #--------------------------------------------------------------------------
  81.   # ● 返回上一个选择的位置
  82.   #--------------------------------------------------------------------------
  83.   def select_last
  84.     select(@data.index($game_party.last_item.object) || 0)
  85.   end
  86.   #--------------------------------------------------------------------------
  87.   # ● 绘制项目
  88.   #--------------------------------------------------------------------------
  89.   def draw_item(index)
  90.     item = @data[index]
  91.     if item
  92.       rect = item_rect(index)
  93.       rect.width -= 4
  94.       draw_item_name(item, rect.x, rect.y, enable?(item))
  95.       draw_item_number(rect, item)
  96.     end
  97.   end
  98.   #--------------------------------------------------------------------------
  99.   # ● 绘制物品个数
  100.   #--------------------------------------------------------------------------
  101.   def draw_item_number(rect, item)
  102.     draw_text(rect, sprintf(":%2d", $game_party.item_number(item)), 2)
  103.   end
  104.   #--------------------------------------------------------------------------
  105.   # ● 更新帮助内容
  106.   #--------------------------------------------------------------------------
  107.   def update_help
  108.     @help_window.set_item(item)
  109.   end
  110.   #--------------------------------------------------------------------------
  111.   # ● 刷新
  112.   #--------------------------------------------------------------------------
  113.   def refresh
  114.     make_item_list
  115.     create_contents
  116.     draw_all_items
  117.   end
  118. end

作者: 张咚咚    时间: 2018-10-3 18:29
本帖最后由 张咚咚 于 2018-10-3 18:31 编辑

category=方法不是有调用吗
作者: 有丘直方    时间: 2018-10-3 19:07
在refresh方法里面加一行
  1. puts caller
复制代码
再运行,你会看到在哪里调用的
作者: kklt    时间: 2018-10-3 20:22
本帖最后由 kklt 于 2018-10-3 20:24 编辑
有丘直方 发表于 2018-10-3 19:07
在refresh方法里面加一行再运行,你会看到在哪里调用的


{0063}:23:in `category='
{0062}:36:in `update'
{0062}:52:in `item_window='
{0106}:40:in `create_item_window'
{0106}:16:in `start'
{0100}:13:in `main'
{0125}:17:in `run_debug'
{0125}:30:in `block in <main>'
:1:in `block in rgss_main'
:1:in `loop'
:1:in `rgss_main'
{0125}:30:in `<main>'
ruby:in `eval'



作者: kklt    时间: 2018-10-3 20:43
张咚咚 发表于 2018-10-3 18:29
category=方法不是有调用吗




"Ruby中允许方法以”=“结尾。以等号结尾的方法有些特殊,Ruby允许以赋值操作的语法来调用它们。"

看来还是我才疏学浅...
感谢张咚咚(真是好名字)




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