Project1

标题: 为了FPS,怎么样才能够局部刷新窗口?! [打印本页]

作者: 失去的记忆    时间: 2011-4-20 16:40
标题: 为了FPS,怎么样才能够局部刷新窗口?!
最近把系统自带的所有窗口都重写了一遍,发现方法大同小异,写完后运行.....
发现FPS狂降!!!所以在这里想请教一个局部刷新窗口的方法,例如:
物品栏中有100个物品,在物品窗口我想让光标移动到哪,那一个物品的名字就变成绿色,
如果要做到这个效果就只能这样:
  1. if 按下左右键
  2. 刷新窗口 #这个刷新是全部刷新100个物品
  3. end
复制代码
如果这样的话会描画很卡的说,有没有办法这样写?
  1. if 按下左右键
  2. 刷新该物品所在区域
  3. end
复制代码
当然这些物品都是在一个窗口中,我本想原理是先清除改光标区域,然后重新描画,但是代码不知道怎么写!
PS:请各位老大指点下~
作者: 心雪    时间: 2011-4-20 19:35
本帖最后由 心雪 于 2011-4-20 20:45 编辑

fill_rect 透明色

受姬中,无范例
Color.new(r,g,b,alpha)

alpha为0即为透明色
作者: 失去的记忆    时间: 2011-4-21 07:48
本帖最后由 失去的记忆 于 2011-4-21 07:49 编辑

理论上可以,但是实际上操作不行,我在Window_Item里面定义了一个方法
  1. def set_rect(x,y,w,h)
  2.       rect = Rect.new(0,0,30,30)
  3.       self.contents = Bitmap.new(30,30)
  4.       self.contents.fill_rect(rect, Color.new(255, 255, 255,100))
  5.   end
复制代码
如果不加“self.contents = Bitmap.new(30,30)”这一句,那么就会报错“contents”为空!!!!
如果加了就会把所有的Bitmap覆盖掉,所以不知道该如何解决
作者: fux2    时间: 2011-4-21 07:54
二次描绘不就可以了,重新描绘一个绿色的想通文字覆盖到该道具的位置。
作者: 禾西    时间: 2011-4-21 11:57
生成一塊用作蒙板的bitmap覆蓋在上面,然後在這個蒙板上描繪綠色文字。
作者: 后知后觉    时间: 2011-4-21 14:55
物品窗口光标处为红色.rar (188.7 KB, 下载次数: 19)
作者: 心雪    时间: 2011-4-21 15:35
本帖最后由 心雪 于 2011-4-21 15:36 编辑
  1. class Bitmap
  2.   def clean_rect(*args)
  3.     case args[0]
  4.     when Rect
  5.       fill_rect(args[0],Color.new(0,0,0,0))
  6.     when Fixnum
  7.       fill_rect(args[0],args[1],args[2],args[3],Color.new(0,0,0,0))
  8.     end
  9.   end
  10. end
复制代码
很难么- -

使用Bitmap#clean_rect(rect)或clean_rect(x,y,width,height)来清除一个Bitmap的矩形区域,然后重新描绘这个区域即可




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