Project1

标题: 经验条增幅异常 [打印本页]

作者: 黑米馒头    时间: 2014-7-30 09:07
标题: 经验条增幅异常
弄了个图片显示经验条增减效果的脚本,发现个问题,图片显示经验和当前的经验不成比例。这是怎么回事。
  1.   class Window_Status < Window_Base
  2.     def refresh     
  3.     self.contents.draw_text(44, 325, 300, 32, @actor.exp_s + "/" + @actor.next_exp_s)
  4.     @exp_a = nil
  5.     @exp_b = nil
  6.     @exp_a = Sprite.new
  7.     @exp_b = Sprite.new  
  8.     #=================图片显示============
  9.     @exp_a.bitmap = Bitmap.new(130,50)    #(底宽度,第高度)
  10.     @exp_b.bitmap= Bitmap.new(130,5)     #(经验条宽度,第高度)
  11.    
  12.     #=================底颜色============
  13.     color1 = Color.new(150,150,150,255)
  14.    
  15.     #=================经验条颜色============
  16.     color2 = Color.new(255,100,100,255)  
  17.    
  18.     #==================底=========================
  19.     @exp_a.x = 60                 
  20.     @exp_a.y = 250  
  21.     @exp_a.z = 10000
  22.     @exp_a.bitmap.fill_rect(0,0,130,32,color1)
  23.    
  24.     #=================经验值增幅度===============
  25.     @exp_c = 130*@actor.exp/@actor.next_rest_exp_s.to_i
  26.    
  27.     #=================经验条增幅条==============
  28.     @exp_b.x = 60
  29.     @exp_b.y = 250  
  30.     @exp_b.z = 10001
  31.     @exp_b.bitmap.fill_rect(0,0,@exp_c,32,color2)
  32.   end
  33.   
  34.   #===================释放经验条====================
  35.   def dispose
  36.     super   
  37.     @exp_a.bitmap.dispose
  38.     @exp_b.bitmap.dispose  
  39.     @exp_a.dispose  
  40.     @exp_b.dispose   
  41.     @exp_a = nil
  42.     @exp_b = nil
  43.   end
  44. end
复制代码

作者: 恐惧剑刃    时间: 2014-7-30 10:07
next_rest_exp_s是距离下一等级还需要的经验 并且返回字符串

换成next_exp_s.to_i试试

作者: 黑米馒头    时间: 2014-7-30 11:57
恐惧剑刃 发表于 2014-7-30 10:07
next_rest_exp_s是距离下一等级还需要的经验 并且返回字符串

换成next_exp_s.to_i试试

我把第9行和10行换成
@exp_a.bitmap = Bitmap.new("Graphics/Pictures/底显示")
@exp_a.bitmap = Bitmap.new("Graphics/Pictures/经验条显示")
怎么经验图片不会变化
作者: 恐惧剑刃    时间: 2014-7-30 13:23
黑米馒头 发表于 2014-7-30 11:57
我把第9行和10行换成
@exp_a.bitmap = Bitmap.new("Graphics/Pictures/底显示")
@exp_a.bitmap = Bitmap. ...

建议使用另一种方法读图

在窗口中:
如果有多张图片最好在初始化先生成一个矩形 @rect = Rect.new(0, 0, 1, 1)
# 读图
bitmap = RPG::Cache.load_bitmap(路径<注意用/隔开>, 图片名称, 色调)
可以不传色调参数。
# 描绘
self.contents.blt(X坐标, Y坐标, bitmap, @rect.set(0, 0, bitmap.width, bitmap.height))


这样就只需self.contents.clear就可以清除所有内容,也无需新定义dispose释放。


你只是读取了一张图并没有改变它的宽度,当然不会变化
你可以使用上述方法读取 然后 改变矩形的宽度就可以
比如
@rect.set(0, 0, bitmap.width*actor.exp/actor.next_exp_s.to_i)

当然你也可以src_rect,不过我还是觉得这里说的这种方法更好


作者: 黑米馒头    时间: 2014-7-30 13:51
恐惧剑刃 发表于 2014-7-30 13:23
建议使用另一种方法读图

在窗口中:

  class Window_Status < Window_Base
  def refresh   
@rect = Rect.new(30, 30, 32, 32)
# 读图
bitmap = RPG::Cache.load_bitmap("Graphics/Pictures/,经验条显示",0)
# 描绘
self.contents.blt(20, 30, bitmap, @rect.set(249, 10, bitmap.width, bitmap.height))
self.contents.clear
@rect.set(249, 10, bitmap.width*actor.exp/actor.next_exp_s.to_i)
end
end
这样怎么不行。。。不太会脚本
作者: 恐惧剑刃    时间: 2014-7-30 19:33
@rect放在初始化initialize里就好
读图要三个参数不是两个参数
修改为 *******("Graphics/Pictures/", "经验条显示")
后边那个0可以不带

blt(X坐标, Y坐标, bitmap, rect)
这里设置的X坐标和Y坐标就是位图的坐标

rect中有四个参数 X坐标, Y坐标, 宽度, 高度
这里的X坐标 Y坐标和上边描绘位图的X坐标Y坐标不是一个概念。

不过一般留零就可以
但是要描绘动态图,就需要调整传送矩形的X坐标与Y坐标了


还是建议LZ去看看 癫狂侠客 有关菜单 的教程。




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