| 
 
| 赞 | 3 |  
| VIP | 0 |  
| 好人卡 | 1 |  
| 积分 | 1 |  
| 经验 | 1600 |  
| 最后登录 | 2020-5-29 |  
| 在线时间 | 413 小时 |  
 Lv1.梦旅人 ACG宅
	梦石0 星屑72 在线时间413 小时注册时间2008-10-1帖子5595  
 | 
| 
本帖最后由 枫起 于 2011-7-16 23:07 编辑
x
加入我们,或者,欢迎回来。您需要 登录 才可以下载或查看,没有帐号?注册会员  
 原版本321行。注释后的版本总共640行- -可见该版本有多么的啰嗦- -
 
 本版本坑了N个月后。。。终于发布了。。。当然,我水平有限,必然有很多错误,希望大家能够指出。
 
 该教程是给新手学RGSS看的,这样有些简单的就可以不用查手册了。查手册的话也可以提高效率和记忆效率。
 #CY 是我写的注释的说明,与自带的区分。
 
 复制代码#==============================================================================
# ■ Window_Base
#------------------------------------------------------------------------------
#  游戏中全部窗口的超级类。
#==============================================================================
class Window_Base < Window        #定义Window_Base类为Window类的子类。
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #     x      : 窗口的 X 坐标
  #     y      : 窗口的 Y 坐标
  #     width  : 窗口的宽
  #     height : 窗口的宽
  #--------------------------------------------------------------------------
  def initialize(x, y, width, height)
  #CY 类Window_Base的名为initialize的方法定义。
  
    super()   
  #CY 重载父类同名的方法。
  
    @windowskin_name = $game_system.windowskin_name
    #CY 先调用$game_system的windowskin_name来获取定义的窗体素材,
    #CY 并且赋给实变量@windowskin_name。
    
    self.windowskin = RPG::Cache.windowskin(@windowskin_name)
    #CY 对RGSS内部模块的RPG::Cache调用windowskin方法,也就是从高速缓存中取得
    #CY 窗口皮肤图像,并调用 Window 类的 windowskin= 方法来赋值。
    
  #CY-------------------以下都为执行他们本身,然后将值赋给它们---------------
    self.x = x    
    self.y = y
    self.width = width
    self.height = height
    self.z = 100
  end               
  #CY 结束此次定义。
  
  #--------------------------------------------------------------------------
  # ● 释放
  #--------------------------------------------------------------------------
  def dispose  
   #CY 定义一个名为dispose的方法。
   
    if self.contents != nil
   # 如果窗口的内容不是空(也就是说窗口有内容)   
   #CY 执行contents这个方法本身,如果执行该方法返回的值不等于nil,则执行下一步,
   #CY 否则执行父类的同名方法dispose。  
   #备注:contents该方法在F1的RGSS参考——游戏库——RGSS内部类里的Window里面。
   
      self.contents.dispose  
   #CY 如果上一步条件满足,则对contents(作为窗口内容显示的位图)
   #CY 执行dispose(释放窗口)方法。
   
    end
    super
    #CY 如果不满足条件,则调用父类的同名方法dispose(释放窗口)。
    
  end
  
  #--------------------------------------------------------------------------
  # ● 获取文字色
  #     n : 文字色编号 (0~7)
  #--------------------------------------------------------------------------
  def text_color(n)     
  #CY 定义一个名为text_color的方法。
    
    case n             
  #CY 执行case循环体 
    
    when 0             
  #CY 当n=1时,执行下一句,否则继续往下对比。
      
      return Color.new(255, 255, 255, 255)    
  #CY 返回执行建立Color的实例的值,内部数值分别是RGB和透明度。
  
  #CY 以下都可以依次类推。
    when 1             
      return Color.new(128, 128, 255, 255)
    when 2
      return Color.new(255, 128, 128, 255)
    when 3
      return Color.new(128, 255, 128, 255)
    when 4
      return Color.new(128, 255, 255, 255)
    when 5
      return Color.new(255, 128, 255, 255)
    when 6
      return Color.new(255, 255, 128, 255)
    when 7
      return Color.new(192, 192, 192, 255)
    else
      normal_color
    end
  end
  #--------------------------------------------------------------------------
  # ● 获取普通文字色
  #--------------------------------------------------------------------------
  def normal_color           
    #CY 定义一个名为normal_color的方法。
    
    return Color.new(255, 255, 255, 255)  
  end    
  #CY 可以看出。该方法的值和上面的循环体case中n=0的值相等。
  #CY 等等!你没什么要问的么?真的没有?难道你不想知道Color这个类里的那四个
  #CY 参数的意义么?想知道?人家现在才不会告诉你呢!继续往下看才能知道哦!
  
  #--------------------------------------------------------------------------
  # ● 获取无效文字色
  #--------------------------------------------------------------------------
  def disabled_color        
  #CY 定义一个名为disabled_color的方法。
  
    return Color.new(255, 255, 255, 128)  
  #CY 需要注意的是最后一个值为128。
  
  end   
  #CY 可以看到,三原色RGB的值都没变,最后的透明度的值约为255的一半,
  #CY 所以该函数实际应用时字体相对于255的字体来说是半透明的。
  
  #--------------------------------------------------------------------------
  # ● 获取系统文字色
  #--------------------------------------------------------------------------
  def system_color          
  #CY 定义一个名为system_color的方法。
    
    return Color.new(192, 224, 255, 255)  
  end
  #--------------------------------------------------------------------------
  # ● 获取危机文字色
  #--------------------------------------------------------------------------
  def crisis_color           
  #CY 定义一个名为crisis_color的方法。
  
    return Color.new(255, 255, 64, 255) 
  end
  #--------------------------------------------------------------------------
  # ● 获取战斗不能文字色
  #--------------------------------------------------------------------------
  def knockout_color         
  #CY 定义一个名为knockout_color的方法。
  
    return Color.new(255, 64, 0)   
  
  #CY 啊嘞嘞?为什么这个只有3个参数?
    
  end   
  #CY 好吧,现在是福利时间,还记得上面我说的那个Color类里面参数的含义么?
  #CY 现在该揭晓了,让我们一起来看看吧!你现在要做的就是翻开我们的参考书。
  #CY 阿勒?参考书是什么?能不能吃?好不好吃?吃你妹啊~F1啦!!!F1!!!
  #CY OK,下面大家打开RGSS参考——游戏库——RGSS内部类——Color。仔细看看吧!
  #CY 注意这一句:Color.new(red, green, blue,[alpha]) 
  #CY 生成 Color 对象。如省略 alpha 的话则默认为 255。
  #CY 看到没有?也就是说第四个参数[alpha](透明度)是可以省略的,只不过省略
  #CY 后Color.new(red, green, blue)等同于Color.new(red, green, blue,255)。
  #CY 也就是没有透明效果了哦!
  #--------------------------------------------------------------------------
  # ● 刷新画面
  #--------------------------------------------------------------------------
  def update                 
  #CY 定义一个名为update的方法。
    super                    
    #CY 调用父类的同名方法(update)重载。
    # 如果窗口的外观被变更了、再设置
    
    if $game_system.windowskin_name != @windowskin_name
  #CY 如果执行全局变量$game_system的windowskin_name方法的值不等于实变量
  #CY @windowskin_name的值,则执行下一步。
  
      @windowskin_name = $game_system.windowskin_name
  #CY 将执行全局变量$game_system的windowskin_name方法的值赋给实变量    
  #CY @windowskin_name。
  
      self.windowskin = RPG::Cache.windowskin(@windowskin_name)
  #CY 看不懂么?魂淡!你有没有看前面啊!!!人家写注释可是很辛苦的!!!往上
  #CY 忘记了的统统给我抬头90°向上看第21行,然后嘴里默念komenasai 100遍!
  #CY PS:傲娇了。。。PIA~然后就是上次写到这出了个非常杯具的事,于是我这是第
  #CY 二遍写这玩意了%>_<%。   
    end
  end
  #--------------------------------------------------------------------------
  # ● 图形的描绘
  #     actor : 角色
  #     x     : 描画目标 X 坐标
  #     y     : 描画目标 Y 坐标
  #--------------------------------------------------------------------------
  def draw_actor_graphic(actor, x, y) 
  #CY 定义名为draw_actor_graphic的方法。
    
    bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
  #CY 对RPG::Cache模块执行名为character的方法,该方法需要2个值。这两个值分别
  #CY 是对actor类使用character_name方法(角色文件名)和对actor类使用character
  #CY _hue(角色色相)。取得角色图像。然后将值赋给变量bitmap。
  #CY character方法的定义请看RGSS参考——游戏库——RGSS内部类的RPG::Cache模块。
  #CY 现在不需要你去记忆RPG::Cache模块的内容哦,了解下即可。
  
    cw = bitmap.width / 4   
  #CY 对变量bitmap使用width(取得位图的宽)方法,并且将值除以4,然后赋给变量cw。
  #CY bitmap的方法在RGSS参考——游戏库——RGSS内部类的Bitmap里面。
  
    ch = bitmap.height / 4
  #CY 对变量bitmap使用height(取得位图的高)方法,并且将值除以4,然后赋给变量ch。  
   
  src_rect = Rect.new(0, 0, cw, ch)
  #CY 新建Rect的实例,内部参数为(0, 0, cw, ch),并将该实例的值赋给变量src_rect。
  #CY Rect的方法在RGSS参考——游戏库——RGSS内部类的Rect里面。
  #CY 神马?你问我x和y的意思?继续抬头90°看141行的注释。。。
  
    self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
  #CY 对contents属性执行blt方法,并且执行它本身。
  #CY 不懂?不动就对了!我还没给出附录呢,你怎么能懂呢!
  
  #CY contents属性:作为窗口内容显示的位图(Bitmap)。
  
  #CY blt(x, y, src_bitmap, src_rect[, opacity]) 方法:
  #CY 传送 src_bitmap 的矩形 src_rect(Rect)到该位图的座标(x,y)。
  #CY opacity 指定其不透明度,范围为 0 ~ 255。
  #CY contents属性在RGSS参考——游戏库——RGSS内部类的Window里。
  #CY blt方法在RGSS参考——游戏库——RGSS内部类的Bitmap里。
  end
  #--------------------------------------------------------------------------
  # ● 名称的描绘
  #     actor : 角色
  #     x     : 描画目标 X 坐标
  #     y     : 描画目标 Y 坐标
  #--------------------------------------------------------------------------
  def draw_actor_name(actor, x, y)  #CY 定义名为draw_actor_name的方法。
    self.contents.font.color = normal_color
  #CY 对contents执行font类的color(字体的颜色)属性,并将前面定义的normal_color
  #CY 方法的值赋给它,并且执行它本身。
    self.contents.draw_text(x, y, 120, 32, actor.name)
  #CY 对contents执行Bitmap类的draw_text(在该位图的矩形或 中描绘字符串 str属性)
  #CY 并执行它本身。
  
  #CY 将窗口的内容显示字体的颜色设定成 normal_color 返回的颜色
  #CY self 表示的是窗口自己本身, 也就是 WIndow_Base 什么的
  
  #CY 参考:RGSS内部类的Font类和Bitmap类。
  #CY PS:同样是调用不同的类的方法,为什么font类要多加个.fot呢?而Bitmap就不要?
  #CY 大家可以看contents属性的后缀,注意,有个(Bitmap)。
#===========================================================================
  
  end
  #--------------------------------------------------------------------------
  # ● 职业的描绘
  #     actor : 角色
  #     x     : 描画目标 X 坐标
  #     y     : 描画目标 Y 坐标
  #--------------------------------------------------------------------------
  def draw_actor_class(actor, x, y)   #CY 定义名为draw_actor_name的方法。
    
  #CY 以下参考刚才讲过的前一个例子,也就是第180行。  
    self.contents.font.color = normal_color
    self.contents.draw_text(x, y, 236, 32, actor.class_name)
  end
  #--------------------------------------------------------------------------
  # ● 等级的描绘
  #     actor : 角色
  #     x     : 描画目标 X 坐标
  #     y     : 描画目标 Y 坐标
  #--------------------------------------------------------------------------
  def draw_actor_level(actor, x, y)  #CY 定义名为draw_actor_name的方法。
  #CY---------------------以下皆参考第180行----------------------------------   
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, 32, "Lv")
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 32, y, 24, 32, actor.level.to_s, 2)
  #CY 大家是否对上一行的最后一个参数2产生了疑惑呢?有的话就去查查我们的参考书
  #CY 吧。也可以看下面的注释:
  
  #CY draw_text(x, y, width, height, str,[align]) 
  #CY 水平方向默认为左对齐,但是当 align 指定为 1 时为居中对齐,指定为 2 时为
  #CY 右对齐。垂直方向则总为居中对齐。
  
  #CY 看到了么?aligh的值是与对齐方法对应的哦。
end
  #--------------------------------------------------------------------------
  # ● 生成描绘用的状态字符串
  #     actor       : 角色
  #     width       : 描画目标的宽度
  #     need_normal : [正常] 是否为必须 (true / false)
  #--------------------------------------------------------------------------
  def make_battler_state_text(battler, width, need_normal)
  #CY 定义名为make_battler_state_text的方法。
  
  # 获取括号的宽
    brackets_width = self.contents.text_size("[]").width
  #CY 先执行contents(作为窗口内容显示的位图),再对其调用text_size方法(取得
  #CY 以draw_text方法描绘字符串 str 的矩形(Rect)。但是,不包含斜体的部分。)
  #CY 然后再对其使用Rect类的width(矩形的宽度)方法,然后再执行它本身,最后再
  #CY 把值赋给变量brackets_width。
  
    # 生成状态名字符串
    text = ""             
    #CY 初始化text变量等于一个空的字符串。
    
    for i in battler.states    
  #CY 先计算表达式battler(battler为函数形参).states,然后针对该对象的每个单
  #CY 元,执行for循环。
  
      if $data_states[i].rating >= 1    
  #CY 如果对全局变量$data_states[i]调用名为rating的方法。如果值大于等于1,则执
  #CY 行下一句。
  #CY 注释:rating为取得优先级。
  
        if text == ""    
  #CY 如果text的值等于空的字符串。则执行下一句。
  
          text = $data_states[i].name 
  #CY 对全局变量$data_states [i]调用name方法,并且把值赋给变量text。  
  
        else
  #CY 否则,执行下列语句(即$data_stares[i].rating的值小于1)。
  
          new_text = text + "/" + $data_states[i].name
  #CY 将变量text的值加上字符串“/”加上对$data_stares[i]执行name方法的值,
  #CY 最后赋值给new_text。
  
          text_width = self.contents.text_size(new_text).width
  #CY 执行contents它本身,对其执行text_size(new_text),再对其执行width,然后
  #CY 赋值给变量text_width。
  
          if text_width > width - brackets_width
  #CY 如果text_width的值大于变量width(形参)减去变量brackets_width的值。
  
            break
  #CY 跳出循环。
          end
          text = new_text
  #CY 将new_text的值赋给text。
        end
      end
    end
    
    # 状态名空的字符串是 "[正常]" 的情况下
    if text == ""
  #CY 如果text的值为nil(""相当于没有字符串)
  
      if need_normal
  #CY 如果need_normal(形参)的值不为false或者nil的话则执行下一个语句。
  
        text = "[正常]"
  #CY 将字符串[正常]赋值给text。
  
      end
    else
      # 加上括号
      text = "[" + text + "]"
  #CY 将字符串“[”加上变量text的值再加上“]”赋值给text。
  
    end
    # 返回完成后的文字类
    return text
  #CY 返回text的值
  end
  #--------------------------------------------------------------------------
  # ● 描绘状态
  #     actor : 角色
  #     x     : 描画目标 X 坐标
  #     y     : 描画目标 Y 坐标
  #     width : 描画目标的宽
  #--------------------------------------------------------------------------
  def draw_actor_state(actor, x, y, width = 120)
  #CY 定义一个名为draw_actor_state的方法。分别有形参actor,x,y,width(赋初
  #CY 值等于120)。
  
    text = make_battler_state_text(actor, width, true)
  #CY 将方法make_battler_state_text的值赋给变量text。
   
    self.contents.font.color = actor.hp == 0 ? knockout_color : normal_color
  #CY 执行contents本身,然后对其使用font,再对其使用color,最后把actor.hp的值
  #CY 赋值给它。
  
  #CY 对actor使用hp方法,如果值等于0的话,则执行knockout_color(战斗不能的颜色)
  #CY  。否则执行normal_color(普通战斗的颜色)。
  
    self.contents.draw_text(x, y, width, 32, text)
  #CY 执行contents它本身,再对其执行draw_text(在contents位图显示字符串text。
  #CY 高度指定为32。
  
  end
  #--------------------------------------------------------------------------
  # ● 描绘 EXP
  #     actor : 角色
  #     x     : 描画目标 X 坐标
  #     y     : 描画目标 Y 坐标
  #--------------------------------------------------------------------------
  def draw_actor_exp(actor, x, y)
  #CY 定义名为draw_actor_exp的方法。
  
    self.contents.font.color = system_color
  #CY 执行contents本身,然后对其使用font,再对其使用color,最后把system_color
  #CY 的值赋值给它。
  
    self.contents.draw_text(x, y, 24, 32, "E")
  #CY 执行contents它本身,再对其执行draw_text(在contents位图显示字符串E。
  #CY 宽度指定为24,宽度指定为32。
  
    self.contents.font.color = normal_color
  #CY 执行contents本身,然后对其使用font,再对其使用color,最后把normal_color
  #CY 的值赋值给它。
  
    self.contents.draw_text(x + 24, y, 84, 32, actor.exp_s, 2)
  #CY 执行contents它本身,再对其执行draw_text(在x的基础上加24,宽度指定为84,
  #CY 高度指定为32。对actor执行exp_s(获取经验值)。对齐方式为右对齐。
  #CY 注:exp_s在脚本的Game_Actor中。
  
    self.contents.draw_text(x + 108, y, 12, 32, "/", 1)
  #CY 执行contents它本身,再对其执行draw_text(在x的基础上加108,宽度指定为12,
  #CY 高度指定为32。显示字符串“/”。对齐方式为居中对齐。 
  
    self.contents.draw_text(x + 120, y, 84, 32, actor.next_exp_s)
  #CY 执行contents它本身,再对其执行draw_text(在x的基础上加120,宽度指定为84,
  #CY 高度指定为32。显示字符串“/”。对齐方式为默认(左对齐)。 
  
  end
  #--------------------------------------------------------------------------
  # ● 描绘 HP
  #     actor : 角色
  #     x     : 描画目标 X 坐标
  #     y     : 描画目标 Y 坐标
  #     width : 描画目标的宽
  #--------------------------------------------------------------------------
  def draw_actor_hp(actor, x, y, width = 144)
  #CY 定义名为draw_actor_hp的方法
  
    # 描绘字符串 "HP"
    self.contents.font.color = system_color
  #CY 执行contents本身,然后对其使用font,再对其使用color,最后把system_color
  #CY 的值赋值给它。    
    
    self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
  #CY 执行contents它本身,再对其执行draw_text(宽度指定为84,高度指定为32。
  #CY 显示的字符串的值为对全局变量$data_system使用words(游戏术语)再对其使用
  #CY hp(取得血量)。
    
    # 计算描绘 MaxHP 所需的空间 
    if width - 32 >= 108
  #CY 如果width减去32大于等于108,则执行下一句。
  
      hp_x = x + width - 108
  #CY 将x加上width的值减去108的值赋给hp_x。  
      flag = true
  #CY 将true赋值给flag。
  
    elsif width - 32 >= 48
      hp_x = x + width - 48
      flag = false
  #CY 同上一步。    
  
    end
    # 描绘 HP
    self.contents.font.color = actor.hp == 0 ? knockout_color :
      actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
  #CY 执行contents本身,然后对其执行font再对其执行color,最后将对actor执行hp的
  #CY 值赋给它。如果该表达式的值等于0的话,则该表达式为knockout_color,否者则为
  #CY actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color这一步的值。
  
  #CY actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color解读:
  #CY 如果对actor使用maxhp然后再除以4的值大于对actor使用hp的值的话,则该表达式
  #CY 等于crisis_color否则则为normal_color。
  
    self.contents.draw_text(hp_x, y, 48, 32, actor.hp.to_s, 2)
  #CY 执行contents它本身,再对其执行draw_text(宽度指定为48,高度指定为32。
  #CY 对actor执行hp(获取血量)再对其执行to_s(转换为字符串并且输出)。
  #CY 对齐方式为右对齐。
    
    # 描绘 MaxHP
    if flag
  #CY 如果flag不等于false或者nil,则执行下一步。
  
      self.contents.font.color = normal_color
  #CY 执行contents本身,然后对其使用font,再对其使用color,最后把normal_color
  #CY 的值赋值给它。      
      
      self.contents.draw_text(hp_x + 48, y, 12, 32, "/", 1)
  #CY 执行contents它本身,再对其执行draw_text(在hp_x的基础上加48,宽度指定为12
  #CY ,高度指定为32。显示字符串“/”。对齐方式为居中对齐。      
      
      self.contents.draw_text(hp_x + 60, y, 48, 32, actor.maxhp.to_s)
  #CY 执行contents它本身,再对其执行draw_text(在hp_x的基础上加60,宽度指定为48
  #CY ,高度指定为32。对actor执行maxhp(获取HP最大值)再对其执行to_s(将对象转
  #CY   换为字符串并且输出)
  #CY 注释:maxhp:在脚本Game_Battler 1中定义。
      
    end
    
  end
  #--------------------------------------------------------------------------
  # ● 描绘 SP
  #     actor : 角色
  #     x     : 描画目标 X 坐标
  #     y     : 描画目标 Y 坐标
  #     width : 描画目标的宽
  #--------------------------------------------------------------------------
  def draw_actor_sp(actor, x, y, width = 144)
  #CY 定义名为draw_actor_sp的方法。
  
    # 描绘字符串 "SP" 
    self.contents.font.color = system_color
  #CY 执行contents本身,然后对其使用font,再对其使用color,最后把system_color
  #CY 的值赋值给它。        
    
    self.contents.draw_text(x, y, 32, 32, $data_system.words.sp)
  #CY 执行contents它本身,再对其执行draw_text(宽度指定为32,高度指定为32。
  #CY 显示的字符串的值为对全局变量$data_system使用words(游戏术语)再对其使用
  #CY sp(取得sp(魔法值))。 
  
  #CY ---------------------------以下类似上面定义的HP-------------------------
  
    # 计算描绘 MaxSP 所需的空间
    if width - 32 >= 108
      sp_x = x + width - 108
      flag = true
    elsif width - 32 >= 48
      sp_x = x + width - 48
      flag = false
    end
    
    # 描绘 SP
    self.contents.font.color = actor.sp == 0 ? knockout_color :
      actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
    self.contents.draw_text(sp_x, y, 48, 32, actor.sp.to_s, 2)
    # 描绘 MaxSP
    if flag
      self.contents.font.color = normal_color
      self.contents.draw_text(sp_x + 48, y, 12, 32, "/", 1)
      self.contents.draw_text(sp_x + 60, y, 48, 32, actor.maxsp.to_s)
    end
  end
  #--------------------------------------------------------------------------
  # ● 描绘能力值
  #     actor : 角色
  #     x     : 描画目标 X 坐标
  #     y     : 描画目标 Y 坐标
  #     type  : 能力值种类 (0~6)
  #--------------------------------------------------------------------------
  def draw_actor_parameter(actor, x, y, type)
  #CY 定义名为draw_actor_parameter的方法。
  
    case type
  #CY 执行case语句。判断值为type。
  
    when 0
  #CY 如果type等于0。
  
      parameter_name = $data_system.words.atk
  #CY 对全局变量$data_system执行words(游戏用语)的atk(攻击力)属性。然后赋值
  #CY 给parameter_name。
  
      parameter_value = actor.atk
  #CY 对actor执行atk(攻击力),然后赋值给parameter_value 
  
  #CY -------------------------------以下同上--------------------------------
      when 1
      parameter_name = $data_system.words.pdef
  #CY pdef(物理防御)
      parameter_value = actor.pdef
    when 2
      parameter_name = $data_system.words.mdef
  #CY mdef(魔法防御) 
      parameter_value = actor.mdef
    when 3
      parameter_name = $data_system.words.str
  #CY str(力量)
      parameter_value = actor.str
    when 4
      parameter_name = $data_system.words.dex
  #CY dex(灵巧) 
      parameter_value = actor.dex
    when 5
      parameter_name = $data_system.words.agi
  #CY agi(速度)    
      parameter_value = actor.agi
    when 6
      parameter_name = $data_system.words.int
  #CY int(魔力)
      parameter_value = actor.int
    end
    
    self.contents.font.color = system_color
  #CY 执行contents本身,然后对其执行font,再对其执行color。最后把system_color的
  #CY 值赋给它。
    
    self.contents.draw_text(x, y, 120, 32, parameter_name)
  #CY 执行contents本身,然后对其执行draw_text(宽度指定为120,高度指定为32。对
  #CY 齐方式默认左对齐。
  
    self.contents.font.color = normal_color
  #CY 执行contents本身,然后对其执行font,再对其执行color。最后把normal_color的
  #CY 值赋给它。
  
    self.contents.draw_text(x + 120, y, 36, 32, parameter_value.to_s, 2)
  #CY 执行contents本身,然后对其执行draw_text(x坐标的值在给定的基础上加120。宽
  #CY 度指定为36,高度指定为32。对齐方式为右对齐。
  #CY to_s为将对象转换为字符串并且返回该字符串。
  
  end
  #--------------------------------------------------------------------------
  # ● 描绘物品名
  #     item : 物品
  #     x    : 描画目标 X 坐标
  #     y    : 描画目标 Y 坐标
  #--------------------------------------------------------------------------
  def draw_item_name(item, x, y)
  #CY 定义名为draw_item_name的方法
    if item == nil
  #CY 如果item的值等于nil。
  
      return
    end
    
    bitmap = RPG::Cache.icon(item.icon_name)
  #CY 执行RPG::Cache.icon。取得图标的图像(形参为对item执行icon_name(取得图标
  #CY 图像名称)。并且将值赋给bitmap。
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
  #CY 执行contents本身,然后对contents执行blt。
  
  #CY ---------------------------------注释-----------------------------------
  #CY blt(x, y, src_bitmap, src_rect[, opacity]) 
  #CY 传送 src_bitmap 的矩形 src_rect(Rect)到该位图的座标(x,y)。
  #CY opacity 指定其不透明度,范围为 0 ~ 255。
  
  #CY  Rect.new(x, y, width, height) 
  #CY 生成 Rect 对象。
  #CY ---------------------------------注释-----------------------------------
    self.contents.font.color = normal_color
  #CY 执行contents本身,然后对其执行font,再对其执行color。最后把normal_color的
  #CY 值赋给它。
    self.contents.draw_text(x + 28, y, 212, 32, item.name)
  #CY 执行contents本身,在对其执行draw_text方法。
  end
end
 | 
 评分
查看全部评分
 |