Project1

标题: 为何窗口大小足够,却描绘不下这几个字? [打印本页]

作者: 奶油Da蛋糕    时间: 2009-10-8 18:33
标题: 为何窗口大小足够,却描绘不下这几个字?
本帖最后由 奶油Da蛋糕 于 2009-10-10 17:16 编辑


鼠标放在血条上,血条下面就显示HP值。
方框是足够大的。
贴上脚本:
  1. class Window_HelpMessage < Window_Base
  2.   def initialize
  3.     super(0,0,640,480)
  4.     self.z = 9994
  5.     self.opacity = 0
  6.     self.windowskin = RPG::Cache.windowskin("005-mxsj.png")   
  7.   end
  8.   def window(x,y,w,h,o)
  9.   self.x = x ; self.y = y ; self.width = w ; self.height = h*2 ; self.opacity = o
  10. end  
  11. def neirong(a)
  12.   self.contents = Bitmap.new(640,480)
  13.   self.contents.font.size = 12
  14.   self.contents.font.color = Color.new(255, 255, 255, 255)
  15.   m = 0
  16.   n = 0
  17.   case a
  18.   when 0
  19.     self.contents.clear
  20.   when 1
  21.   self.contents.draw_number(m,n, $game_actors[1].hp )
  22.   self.contents.draw_text(m,n,4,4,"/",0)
  23.   self.contents.draw_number(m+16+4, n, $game_actors[1].maxhp )
  24. end
  25. end
  26. end
复制代码
  1. class Scene_Map
  2. alias update_cake update
  3. def update
  4.     mouse_x, mouse_y = Mouse.get_mouse_pos
  5.     if mouse_x > (501+63) and mouse_x < (501+130) and
  6.       mouse_y > 3 and mouse_y < 14      
  7.       @helpmessage.window(501+63,14,130-63,18,255)
  8.       @helpmessage.neirong(1)
  9.       else
  10.       @helpmessage.opacity = 0
  11.       @helpmessage.neirong(0)
  12.       end
  13. update_cake
  14. end
  15. end
复制代码
结果鼠标放到血条上面就出现了图片上的情况

把这几个数字往上面移动也显示不全,坐标右边也显示不全,但是窗口大小是足够的。
作者: 龙鑫    时间: 2009-10-8 18:39
where is the definition of "draw_number"?
作者: 奶油Da蛋糕    时间: 2009-10-8 18:44
where is the definition of "draw_number"?
龙鑫 发表于 2009-10-8 18:39
  1. class Bitmap
  2.   def draw_number(x, y, nu,pict = RPG::Cache.picture("shuzi"))
  3.     w=pict.width / 10
  4.     h=pict.height
  5.     ce = Rect.new(0,0,w,h)
  6.     nu=nu.to_s
  7.     ar = nu.split(//)
  8.     for i in 0...ar.size
  9.       ar[i] = ar[i].to_i
  10.     end
  11.     for sz in ar
  12.       ce.x = sz * w
  13.       self.blt(x,y,pict,ce)
  14.       x+=w
  15.     end
  16.   end
  17. end
复制代码

作者: 后知后觉    时间: 2009-10-8 21:59
@helpmessage.window(501+63,14,130-63,18,255)

最后的结果是 X:564  Y:14 width:67  height:36  opacity:255
去除边框的32像素 能用来显示的是  67-32=35  36-32=4
35,4  这样的大小够你显示?你那张数字图片多大的?
作者: 传说中di    时间: 2009-10-9 01:25
度够了 高不够 改高度
作者: 奶油Da蛋糕    时间: 2009-10-10 17:13
@helpmessage.window(501+63,14,130-63,18,255)

最后的结果是 X:564  Y:14 width:67  height:36  opacity:255
去除边框的32像素 能用来显示的是  67-32=35  36-32=4
35,4  这样的大小够你显示?你那张数字图片多 ...
后知后觉 发表于 2009-10-8 21:59


哦,是这样的呀,谢谢啦。
原来边框还有32个像素。
如果想要除去这32个像素,让字符显示在边框上,看来字符和边框得分开用两个window写。
谢谢啦。
作者: 后知后觉    时间: 2009-10-10 18:14
用sprite一样可以建立bitmap
sprite就没有那个边框




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