| 赞 | 3  | 
 
| VIP | 0 | 
 
| 好人卡 | 1 | 
 
| 积分 | 1 | 
 
| 经验 | 1600 | 
 
| 最后登录 | 2020-5-29 | 
 
| 在线时间 | 413 小时 | 
 
 
 
 
 
Lv1.梦旅人 ACG宅
	- 梦石
 - 0 
 
        - 星屑
 - 72 
 
        - 在线时间
 - 413 小时
 
        - 注册时间
 - 2008-10-1
 
        - 帖子
 - 5595
 
 
   
  
 | 
	
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员  
 
x
 
 本帖最后由 枫起 于 2011-7-16 23:07 编辑  
 
原版本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
 
 
  复制代码 |   
 
评分
- 
查看全部评分
 
 
 
 
 
 |