Project1

标题: Window_BattleStatus窗口refresh的问题... [打印本页]

作者: doranikofu    时间: 2008-2-4 03:18
标题: Window_BattleStatus窗口refresh的问题...
Window_BattleStatus窗口refresh的时候会先清除窗口内容

但是我的窗口里面还有人物头像一些每次战斗中不会发生变化的内容

如果不刷新这些东西而只刷新血槽和数值能不能提高运行速度?

难道要新建一个窗口放那些不变的图片么 感觉比较麻烦{/gg}
作者: 水迭澜    时间: 2008-2-4 03:19
能的……
具体的我记得主站上有讲~
作者: doranikofu    时间: 2008-2-4 03:42
是的。但是其实这个还可以继续改进,refresh的时候,不要全部.clear了,先把需要refresh的区域rect选出来,然后fill_rect清掉重描绘。

这个?{/fd}
不是很明白 能举个例子么{/gg}

比如我的这个
  1. def refresh

  2.     # 変更するものがない場合、飛ばす
  3.     @item_max = $game_party.actors.size
  4.     # 描写を開始
  5.     self.contents.clear
  6.     for i in 0...@item_max
  7.       actor = $game_party.actors[i]
  8.       actor_x = i * 146 + 35
  9.       # 歩行キャラグラフィックの描写

  10.       draw_actor_graphic(actor, actor_x+10 , 5)
  11.       # HP/SPメーターの描写
  12.       draw_actor_hp_meter_line(actor, actor_x+96, 25, 75, 10)
  13.       draw_actor_sp_meter_line(actor, actor_x+96, 53, 75, 10)
  14.       #★ HP_store描写
  15.       draw_actor_hp_store_meter_line(actor, actor_x+96, 70, 72, 6)
  16.       # HP数値の描写
  17.       self.contents.font.size = 24 # HP/SP数値の文字の大きさ  
  18.       self.contents.font.color = Color.new(0,0,0,192)
  19.       self.contents.draw_text(actor_x+90, 11, 80, 24, actor.hp.to_s, 2)
  20.       self.contents.font.color = actor.hp == 0 ? knockout_color :
  21.       actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
  22.       self.contents.draw_text(actor_x+88, 11, 80, 24, actor.hp.to_s, 2)
  23.       # SP数値の描写
  24.       self.contents.font.color = Color.new(0,0,0,192)
  25.       self.contents.draw_text(actor_x+90, 39, 80, 24, actor.sp.to_s, 2)
  26.       self.contents.font.color = actor.sp == 0 ? knockout_color :
  27.       actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
  28.       self.contents.draw_text(actor_x+88, 39, 80, 24, actor.sp.to_s, 2)
  29.       # 用語「HP」と用語「SP」の描写

  30.       bitmap = Bitmap.new("Graphics/Icons/name_"+actor.id.to_s)
  31.       src_rect = Rect.new(0, 0, 24, 64)
  32.       self.contents.blt(actor_x, 6, bitmap, src_rect)
  33.       bitmap = Bitmap.new("Graphics/Icons/menu_HP.png")
  34.       src_rect = Rect.new(0, 0, 24, 24)
  35.       self.contents.blt(actor_x+88, 8, bitmap, src_rect)
  36.         bitmap = Bitmap.new("Graphics/Icons/menu_SP.png")
  37.       src_rect = Rect.new(0, 0, 24, 24)
  38.       self.contents.blt(actor_x+88, 36, bitmap, src_rect)

  39.       # ステートの描写
  40.       draw_actor_state(actor, actor_x+18, 50)
  41.       
  42.       @refresh_flag = false

  43.     end
  44.   end
复制代码

作者: 水迭澜    时间: 2008-2-4 03:46
是这样的
默认的时候不是self.contents.clear吗
这个是清除全部窗口内容的
而要清除一个固定的矩形就
self.contents.fill_rect(x,y,宽,高,Color.new(0,0,0,0))(大概这么写吧)
就是用透明色去填充这个矩形的内部……
不过你自己要对好坐标看清除哪部分了 [LINE]1,#dddddd[/LINE]系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
作者: 沉影不器    时间: 2008-2-4 03:52
提示: 作者被禁止或删除 内容自动屏蔽
作者: doranikofu    时间: 2008-2-4 04:49
恩 我看还是一起刷好了 Orz
感谢两位解答
作者: 3535    时间: 2008-2-4 04:53
头像一些每次战斗中不会发生变化的内容...放到Spriteset_Battle...
(要是图)
作者: doranikofu    时间: 2008-2-4 04:55
我用的超级横板 z坐标貌似有点麻烦 而且还有几个小图标{/gg}




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