设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1311|回复: 1
打印 上一主题 下一主题

[已经解决] 还是关于状态栏背景图片的“缝隙”问题

[复制链接]

Lv2.观梦者

梦石
0
星屑
723
在线时间
530 小时
注册时间
2010-6-9
帖子
840
跳转到指定楼层
1
发表于 2015-8-22 10:26:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
经过论坛几位大神的指点,已经改善了很多,在此先由衷表示感谢,感谢指点。
以为将印象中的heightmax从412修正为416能解决问题,回来测试的时候似乎并未解决最下端问题,脚本及图片附上:请再次指点。

RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Window_Status
  4. #------------------------------------------------------------------------------
  5. #  状态画面中,显示角色基本信息的窗口。
  6. #==============================================================================
  7. class Window_Status < Window_Selectable
  8.         #--------------------------------------------------------------------------
  9.         # ● 初始化对象
  10.         #--------------------------------------------------------------------------
  11.         def initialize(actor)
  12.                 super(0, 0, 544, 416)
  13.                 @actor = actor
  14.                 refresh
  15.                 activate
  16.     self.opacity=0
  17.                 @data = []
  18.         end
  19.   def standard_padding
  20.     return 0
  21.   end
  22.         #--------------------------------------------------------------------------
  23.         # ● 设置角色
  24.         #--------------------------------------------------------------------------
  25.         def actor=(actor)
  26.                 return if @actor == actor
  27.                 @actor = actor
  28.                 refresh
  29.         end
  30.         #--------------------------------------------------------------------------
  31.         # ● 刷新
  32.         #--------------------------------------------------------------------------
  33.         def refresh
  34.                 contents.clear
  35.                 draw_block1   (0)
  36.                 draw_skill
  37.         end
  38.         #--------------------------------------------------------------------------
  39.         # ● 绘制区域 1
  40.         #--------------------------------------------------------------------------
  41.         def draw_block1(y)
  42. #~     draw_window_backg
  43.                 draw_backg
  44. #~                 draw_actor_name(@actor, 4, y)
  45. #~                 draw_actor_class(@actor, 128, y)
  46.                 draw_basic_info(136, y)
  47.                 draw_parameters(32, y)
  48.                 draw_xparameters
  49.                 draw_sparameters
  50. #~                 draw_equipments(288, y)
  51. #~                 draw_description(4, y)
  52.         end
  53.         #--------------------------------------------------------------------------
  54.         # ● 绘制水平线
  55.         #--------------------------------------------------------------------------
  56.         def draw_horz_line(y)
  57.                 line_y = y + line_height / 2 - 1
  58.                 contents.fill_rect(0, line_y, contents_width, 2, line_color)
  59.         end
  60.         #--------------------------------------------------------------------------
  61.         # ● 获取水平线的颜色
  62.         #--------------------------------------------------------------------------
  63.         def line_color
  64.                 color = normal_color
  65.                 color.alpha = 48
  66.                 color
  67.         end
  68.         #--------------------------------------------------------------------------
  69.         # ● 绘制基本信息
  70.         #--------------------------------------------------------------------------
  71.         def draw_basic_info(x, y)
  72.                 w=28
  73.                 rct_w=32
  74.                 rct_h=24
  75.                 y_z=160
  76.                 x_z=0
  77.                 #~  draw_actor_icons(@actor, x, y + line_height * 1)绘制状态图标
  78.                 contents.font.size=16
  79. #~                 draw_actor_hp(@actor, 160, 200,width= 100)
  80. #~                 draw_actor_mp(@actor, 160, 224,width= 100)
  81.                 draw_icon(6, x_z  , y_z    , enabled = true)
  82.                 draw_icon(3, x_z+w  , y_z  , enabled = true)
  83.                 draw_icon(4, x_z+w*2  , y_z, enabled = true)
  84.                 draw_icon(8, x_z+w*3  , y_z, enabled = true)
  85.                 draw_icon(5, x_z+w*4  , y_z, enabled = true)
  86.                 draw_icon(10, x_z+w*5  , y_z, enabled = true)
  87.  
  88.     draw_text(x_z+4 ,y_z+w-8    ,rct_w,rct_h,@actor.m5_20150228_skill_point["火"])
  89.                 draw_text(x_z+w+4 ,y_z+w-8  ,rct_w,rct_h,@actor.m5_20150228_skill_point["水"])
  90.                 draw_text(x_z+w*2+4 ,y_z+w-8,rct_w,rct_h,@actor.m5_20150228_skill_point["光"])
  91.                 draw_text(x_z+w*3+4 ,y_z+w-8,rct_w,rct_h,@actor.m5_20150228_skill_point["风"])
  92.                 draw_text(x_z+w*4+4 ,y_z+w-8,rct_w,rct_h,@actor.m5_20150228_skill_point["地"])
  93.                 draw_text(x_z+w*5+4 ,y_z+w-8,rct_w,rct_h,@actor.m5_20150228_skill_point["混沌"])
  94.  
  95.                 draw_text(x_z+4 ,y_z+w+4    ,rct_w,rct_h,@actor.m5_20150228_skill_point_use["火"])
  96.                 draw_text(x_z+w+4 ,y_z+w+4  ,rct_w,rct_h,@actor.m5_20150228_skill_point_use["水"])
  97.                 draw_text(x_z+w*2+4 ,y_z+w+4,rct_w,rct_h,@actor.m5_20150228_skill_point_use["光"])
  98.                 draw_text(x_z+w*3+4 ,y_z+w+4,rct_w,rct_h,@actor.m5_20150228_skill_point_use["风"])
  99.                 draw_text(x_z+w*4+4 ,y_z+w+4,rct_w,rct_h,@actor.m5_20150228_skill_point_use["地"])
  100.                 draw_text(x_z+w*5+4 ,y_z+w+4,rct_w,rct_h,@actor.m5_20150228_skill_point_use["混沌"])
  101.         end
  102.         #--------------------------------------------------------------------------
  103.         # ● 绘制技能
  104.         #--------------------------------------------------------------------------
  105.         def draw_skill
  106.                 dx = 170; dy = 40
  107.                 contents.font.size=16
  108.                 for skill in @actor.skills
  109.                         next if skill.nil?
  110.                         next unless @actor.added_skill_types.include?(skill.stype_id)
  111.                         draw_item_name(skill, dx, dy)
  112.                         #~  dx = dx == contents.width / 2 + 16 ? 0 : contents.width / 2 + 16
  113.                         dy += line_height #if dx == 0
  114.                         return if dy + line_height > contents.height
  115.                 end
  116.         end
  117.         #--------------------------------------------------------------------------
  118.         # ● 绘制普通能力值  
  119.   #def mhp;  param(0);   end    # 最大HP          Maximum Hit Point
  120.   #def mmp;  param(1);   end    # 最大MP          Maximum Magic Point
  121.   #def atk;  param(2);   end    # 物理攻击        ATtacK power
  122.   #def def;  param(3);   end    # 物理防御        DEFense power
  123.   #def mat;  param(4);   end    # 魔法攻击        Magic ATtack power
  124.   #def mdf;  param(5);   end    # 魔法防御        Magic DeFense power
  125.   #def agi;  param(6);   end    # 敏 捷 值        AGIlity
  126.   #def luk;  param(7);   end    # 幸 运 值        LUcK
  127.         #--------------------------------------------------------------------------
  128.         def draw_parameters(x, y)
  129.                 contents.font.size=18
  130.     w=24
  131.                 rct_w=32
  132.                 rct_h=24
  133.                 y_z=210
  134.                 x_z=0
  135. #~     draw_icon(15, x_z , y_z, enabled = true)
  136. #~                 draw_icon(16, x_z , y_z+w, enabled = true)
  137. #~                 draw_icon(17, x_z , y_z+w*2, enabled = true)
  138. #~                 draw_icon(18, x_z , y_z+w*3, enabled = true)
  139. #~                 draw_icon(19, x_z+70 , y_z, enabled = true)
  140. #~                 draw_icon(10, x_z+70 , y_z+w, enabled = true)
  141. #~                 draw_icon(21, x_z+70 , y_z+w*2, enabled = true)
  142. #~     draw_icon(21, x_z+70 , y_z+w*3, enabled = true)
  143.     draw_actor_param(@actor, x_z, y_z  , 0)
  144.     draw_actor_param(@actor, x_z, y_z + w * 1, 1)
  145.     draw_actor_param(@actor, x_z, y_z + w * 2, 2)
  146.     draw_actor_param(@actor, x_z, y_z + w * 3, 3)
  147.     draw_actor_param(@actor, 74, y_z , 4)
  148.     draw_actor_param(@actor, 74, y_z + w * 1, 5)
  149.     draw_actor_param(@actor, 74, y_z + w * 2, 6)
  150.     draw_actor_param(@actor, 74, y_z + w * 3, 7)
  151.         end
  152.   #--------------------------------------------------------------------------
  153.         # ● 绘制X能力值
  154.         #--------------------------------------------------------------------------
  155.         def draw_xparameters
  156.                 x=140
  157.                 l=18
  158.                 y=Graphics.height-l*10
  159.                 contents.font.size=16
  160.                 draw_actor_xparam(@actor, x, y+l*1,0 , "物理命中")
  161.                 draw_actor_xparam(@actor, x, y+l*2,1 , "物理闪避")
  162.                 draw_actor_xparam(@actor, x, y+l*3,2 , "会心一击")
  163.                 draw_actor_xparam(@actor, x, y+l*4,3 , "抗会心一击")
  164.                 #~  draw_actor_xparam(@actor, x, y+l*5,4 , "技能闪避")
  165.                 #~  draw_actor_xparam(@actor, x, y+l*6,5 , "技能反射")
  166.                 draw_actor_xparam(@actor, x, y+l*5,6 , "反击")
  167.                 draw_actor_xparam(@actor, x, y+l*6,7 , "生命再生")
  168.                 draw_actor_xparam(@actor, x, y+l*7,8 , "士气再生")
  169.                 #~  draw_actor_xparam(@actor, x, y+l*10,9 , "怒气增长")
  170.         end
  171.   #--------------------------------------------------------------------------
  172.         # ● 绘制S能力值
  173.         #--------------------------------------------------------------------------
  174.         def draw_sparameters
  175.                 x=0
  176.                 l=18
  177.                 y=Graphics.height-l*7
  178.                 contents.font.size=16
  179.                 draw_actor_sparam(@actor, x, y+l*1, 1,"防御修正")
  180.                 draw_actor_sparam(@actor, x, y+l*2, 2,"恢复修正")
  181.                 draw_actor_sparam(@actor, x, y+l*3, 3,"治疗修正")
  182.                 #~  draw_actor_sparam(@actor, x, y+l*4, 4,"MP消费率")
  183.                 #~  draw_actor_sparam(@actor, x, y+l*5, 5,"TP消耗率")
  184.                 draw_actor_sparam(@actor, x, y+l*4, 6,"物抗修正")
  185.                 #~  draw_actor_sparam(@actor, x, y+l*7, 7,"魔法伤害加成")
  186.                 #~  draw_actor_sparam(@actor, x, y+l*8, 8,"地形伤害加成")
  187.                 #~  draw_actor_sparam(@actor, x, y+l*9, 9,"经验获得加成")
  188.         end
  189.   #--------------------------------------------------------------------------
  190.         # ● 绘制人物背景
  191.         #--------------------------------------------------------------------------
  192.         def draw_backg
  193.                 actor=@actor
  194.                 actor_bg(actor.id)
  195.         end
  196.         def actor_bg(file_name)
  197.                 bitmap = Cache.picture("/Actor#{file_name}_Status")
  198.                 src_rect = Rect.new(0,0,544,416)
  199.                 contents.blt(0, 0, bitmap, src_rect,255)
  200.         end
  201.   #--------------------------------------------------------------------------
  202.         # ● 绘制窗口背景
  203.         #--------------------------------------------------------------------------
  204. #~         def draw_window_backg
  205. #~                 windowbg = Cache.picture("/windowbg")
  206. #~                 src_rect = Rect.new(0,0,windowbg.width ,windowbg.height)
  207. #~                 contents.blt(0, 0, windowbg, src_rect,125)
  208. #~         end
  209. end

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9397
在线时间
2748 小时
注册时间
2008-9-5
帖子
3543

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

2
发表于 2015-8-22 12:06:41 | 只看该作者
本帖最后由 cinderelmini 于 2015-8-22 19:38 编辑

想了一下。。。果然还是来传教惹……
【Sprite大法好!!】
总之就是不在Window里的contents来生成背景,而是用叠在后方的精灵,
这样就不会被窗口尺寸限制到大小之类的了,
代码如下:

替换掉你原来的就好(有必要的话请先备份一下你原来的脚本……)
PS:顺便整理了一下代码缩进之类的,简直逼死强迫症…………
PS2:顺便兼容了LZ另外一个问题(去掉各种能力值的描述蓝字,如果不需要这个功能,脚本最后一个方法去掉就好。)
PS3:不知道之前图片命名前面需要一个斜杠吗?如果找不到文件的话试试把图片名前面的斜杠去掉?或者在脚本里加回去?

点评

啊~抱歉,某个地方测试的时候加了return忘记去掉了,脚本已修正。  发表于 2015-8-22 19:38
还是先养成规范整理脚本缩进的好习惯吧?→_→  发表于 2015-8-22 12:31
感谢啊,我会借此好好学习Sprite大法的。  发表于 2015-8-22 12:29
感谢指导,我先试试。  发表于 2015-8-22 12:25
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 15:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表