Project1

标题: index是什么东西? [打印本页]

作者: mike1735    时间: 2014-2-6 23:29
标题: index是什么东西?
01.rect = item_rect_for_text(index)
我看薛定谔的胖次的教程设计菜单用到了这个。想知道index到底是什么?变量?什么变量?他是在哪里定义的?
作者: 喵呜喵5    时间: 2014-2-6 23:40
index是个变量的名字而已,没有定义的时候就是nil
差不多像下面这种感觉
  1. def mwm5
  2.   a = 1
  3.   return a
  4. end
  5. p mwm5 #1
复制代码
  1. def mwm5(b)
  2.   a = b
  3.   return a
  4. end
  5. p mwm5(2) #2
复制代码
Ruby语言不像C语言那样必须事先定义才能使用变量(类变量除外)
作者: SuperMario    时间: 2014-2-7 01:03
就这一句鬼知道那是什么。
作者: 千昭    时间: 2014-2-7 01:41
通常情况是光标所在位置

这一句可能是说光标所在的项目
作者: 余烬之中    时间: 2014-2-7 08:33
目测是项目序号 用来控制描绘矩形的位置
但是不给出处也说不准
作者: mike1735    时间: 2014-2-7 22:35
那部分脚本是这样的
  1. class Window_NewMenuStatus < Window_Command
  2.   #----------------------------------------------------------------------------
  3.   # * 初始化
  4.   #----------------------------------------------------------------------------
  5.   def initialize
  6.     super(160, 0)
  7.   end
  8.   #----------------------------------------------------------------------------
  9.   # * 获取窗口的宽度
  10.   #----------------------------------------------------------------------------
  11.   def window_width
  12.     return 384
  13.   end
  14.   #----------------------------------------------------------------------------
  15.   # * 获取窗口的高度
  16.   #----------------------------------------------------------------------------
  17.   def window_height
  18.     return 416
  19.   end
  20.   #----------------------------------------------------------------------------
  21.   # * 更新窗口
  22.   #----------------------------------------------------------------------------
  23.   def update
  24.     super
  25.   end
  26.   #----------------------------------------------------------------------------
  27.   # * 生成指令列表
  28.   #----------------------------------------------------------------------------
  29.   def make_command_list
  30.     for actor in $game_party.members
  31.       s = "a[#{actor.id}]"
  32.       add_command(actor.name,s.to_sym,!actor.death_state?,actor.id)
  33.     end
  34.   end
  35.   #-----------------------------------------------------------------------------
  36.   def draw_item(index)
  37.     rect = item_rect_for_text(index)
  38.     cn = $game_actors[@list[index][    b = Bitmap.new(rect.width,rect.height)
  39. :ext]].character_name
  40.     ci = $game_actors[@list[index][:ext]].character_index
  41.     cb = Cache.character(cn)
  42.     #---------------------------------------------------------------------------
  43.     #     *提取$或无$开头的点阵图2号位的图像
  44.     #---------------------------------------------------------------------------
  45.     sign = cn[/^[\!\$]./]
  46.     if sign && sign.include?('是我的问题提得不好。我想知道是什么方法调用了draw_item(index),带入index的参数是什么,在哪里。index貌似是项目编号确定矩形位置用的但我不太懂他的工作原理,求解释。)
  47.       cr = Rect.new
  48.       cr.x = cb.width / 3
  49.       cr.width = cb.width / 3
  50.       cr.height = cb.height / 4
  51.     else
  52.       cr = Rect.new
  53.       cr.x = ci % 4 * (cb.width / 4) + cb.width / 12
  54.       cr.y = ci / 4 * (cb.height / 2)
  55.       cr.width = cb.width / 12
  56.       cr.height = cb.height / 8
  57.     end
  58.     #---------------------------------------------------------------------------
  59.     #    *居中描绘点阵图
  60.     #---------------------------------------------------------------------------
  61.     #b.blt((b.width - cr.width) / 2, (b.height - cr.height) / 2, cb, cr)
  62.     self.contents.blt(rect.x * (b.width - cr.width) / 2, rect.y, cb, cr)
  63.   end
  64.   #-----------------------------------------------------------------------------
  65.   #    *定义选择框为方形(菜单宽度/4 * 48)
  66.   #-----------------------------------------------------------------------------
  67.   def item_rect(index)
  68.     rect = Rect.new
  69.     rect.width = self.contents.width / 4
  70.     rect.height = 48
  71.     rect.x = index < 4 ? index * rect.width : (index - 4) * rect.width
  72.     rect.y = index < 4 ? 0 : self.contents.height - rect.height
  73.     return rect
  74.   end
  75. end
复制代码
是我的问题提得不好。我想知道是什么方法调用了draw_item(index),带入index的参数是什么,在哪里。index貌似是项目编号确定矩形位置用的但我不太懂他的工作原理,求解释。
作者: Sion    时间: 2014-2-7 23:11
本帖最后由 Sion 于 2014-2-7 23:17 编辑

这是方法传递过来的参数,你再 Ctrl + Shift + F 全局搜 draw_item 就能找到了

PS: 一些方法找不到也许是用 attr_reader、 attr_accessor 、attr_writer 定义的,它们用来快速定义读写实例变量的方法。
比如说
  1. attr_reader :a
复制代码
就相当于
  1. def a
  2.   return @a
  3. end
复制代码
还有一些方法定义在 RGSS 内部类中,可以查阅 F1 帮助手册




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