赞 | 0 |
VIP | 0 |
好人卡 | 27 |
积分 | 1 |
经验 | 21216 |
最后登录 | 2017-9-15 |
在线时间 | 269 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 269 小时
- 注册时间
- 2014-5-9
- 帖子
- 127
|
并不是这样的,gradient_fill_rect 是一个描绘渐变颜色的方法,以下这段来自于RMVA的F1帮助中:
gradient_fill_rect(rect, color1, color2[, vertical])
将位图区域 (x, y, width, height) 或矩形(Rect)填满从颜色 color1(Color)至 color2(Color)的渐变色彩。
将 vertical 设为 true 生成纵向的渐变色彩,默认为横向渐变。
如果要描绘血槽的话,血槽的总宽度是任意的,你可以按照自己的需要来设置,而移动的宽度……你是想要表达当前HP的宽度吧?可以通过计算角色当前HP和角色总HP的百分比乘以血槽的总宽度来获得。
实际上,描绘血槽在 Window_Base 类已经有一个不错的方法了:- def draw_actor_hp(actor, x, y, width = 124)
- draw_gauge(x, y, width, actor.hp_rate, hp_gauge_color1, hp_gauge_color2)
- change_color(system_color)
- draw_text(x, y, 30, line_height, Vocab::hp_a)
- draw_current_and_max_values(x, y, width, actor.hp, actor.mhp,
- hp_color(actor), normal_color)
- end
复制代码 仿照这个方法,我们完全可以为 bitmap 类写一个类似的方法来描绘血槽:- class Bitmap
- def qz4j150713_draw_actor_hp(actor, rect, color1, color2, color3)
- fill_w = (rect.width * actor.hp_rate).to_i
- self.fill_rect(rect, color3)
- target_rect = rect.clone
- target_rect.width = fill_w
- self.gradient_fill_rect(target_rect, color1, color2)
- end
- end
复制代码 于是你原本的脚本就可以修改成这样:- def update
- self.bitmap.clear
- actor = $game_actors[1] # 需要描绘HP的角色
- rect = Rect.new(70, 370, 400, 30) # 描绘血槽的位置
- color1 = color.set(255, 255, 255) # 血槽左侧的颜色
- color2 = color.set(255, 155, 125) # 血槽右侧的颜色
- color3 = Color.new(255, 255, 255) # 血槽背景的颜色
- self.bitmap.qz4j150713_draw_actor_hp(actor, rect, color1, color2, color3)
- end
复制代码 另外,一般来说,血槽并不需要实时刷新,个人建议你可以将脚本改成这样提升效率(以下代码并未测试):- def update
- actor = $game_actors[1] # 需要描绘HP的角色
- if @hp != actor.hp
- @hp = actor.hp
- refresh(actor)
- end
- end
- def refresh(actor)
- self.bitmap.clear
- rect = Rect.new(70, 370, 400, 30) # 描绘血槽的位置
- color1 = color.set(255, 255, 255) # 血槽左侧的颜色
- color2 = color.set(255, 155, 125) # 血槽右侧的颜色
- color3 = Color.new(255, 255, 255) # 血槽背景的颜色
- self.bitmap.qz4j150713_draw_actor_hp(actor, rect, color1, color2, color3)
- end
复制代码 |
评分
-
查看全部评分
|