查看: 2446|回复: 2

[已经解决] 血条释放延迟

[复制链接]
梦石
0
星屑
170
在线时间
809 小时
注册时间
2013-8-23
回帖
773

开拓者

发表于 2014-7-18 17:05:33 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 冰水金刚 于 2014-7-19 09:02 编辑

血条定义(Window_Help中)
[pre lang="ruby" line="1"]def set_enemy(enemy)
    @hp = nil
    @sp = nil
    @hp_a = nil
    @sp_a = nil
    @hp = Sprite.new
    @hp_a = Sprite.new
    @sp = Sprite.new
    @sp_a = Sprite.new
    @hp.bitmap = Bitmap.new(130,5)
    @hp_a.bitmap= Bitmap.new(130,5)
    @sp.bitmap = Bitmap.new(130,5)
    @sp_a.bitmap = Bitmap.new(130,5)
    color1 = Color.new(150,150,150,255)
    color2 = Color.new(255,100,100,255)
    color3 = Color.new(100,100,255,255)
    @hp.x = 60
    @hp.y = 50
    @hp.z = 10000
    @hp.bitmap.fill_rect(0,0,120,32,color1)
    @sp.x = 450
    @sp.y = 50
    @sp.z = 10000
    @sp.bitmap.fill_rect(0,0,120,32,color1)
    @hpa = 120*enemy.hp/enemy.maxhp
    @spa = 120*enemy.sp/enemy.maxsp
    @hp_a.x = 60
    @hp_a.y = 50
    @hp_a.z = 10000
    @hp_a.bitmap.fill_rect(0,0,@hpa,32,color2)
    @sp_a.x = 450
    @sp_a.y = 50
    @sp_a.z = 10000
    @sp_a.bitmap.fill_rect(0,0,@spa,32,color3)
end[/pre]
释放(Window_Help中)
[pre lang="ruby" line="1"]  def disposea
    if @hp != nil
      @hp.bitmap.dispose
      @hp.dispose
      @hp_a.bitmap.dispose
      @hp_a.dispose
      @sp.bitmap.dispose
      @sp.dispose
      @sp_a.bitmap.dispose
      @sp_a.dispose
      @hp = nil
      @sp = nil
      @hp_a = nil
      @sp_a = nil
    end
  end
[/pre]
Scene_Battle中每个设置帮助窗口不可见的地方我都调用了disposea,但实际战斗时帮助窗口瞬间消失时血条总要等一段时间才消失,而不是同时消失,怎么让他们同时消失

点评

把dispose的部分穿插在一起写试试  发表于 2014-7-18 18:02

评分

参与人数 1星屑 +35 收起 理由
︶ㄣ牛排ぶ + 35 手动认可奖励

查看全部评分

遗失的签名。。。

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
回帖
1223
发表于 2014-7-18 22:48:08 | 显示全部楼层
本帖最后由 恐惧剑刃 于 2014-7-20 01:34 编辑

放在Window_Help下面
  1. #==============================================================================
  2. # ■ Window_Help
  3. #------------------------------------------------------------------------------
  4. #  特技及物品的说明、角色的状态显示的窗口。
  5. #==============================================================================

  6. class Window_Help < Window_Base
  7.   def disposea
  8.     if @hp != nil
  9.       @hp.bitmap.dispose
  10.       @hp.dispose
  11.       @hp = nil
  12.       @hp_a.bitmap.dispose
  13.       @hp_a.dispose
  14.       @hp_a = nil
  15.       @sp.bitmap.dispose
  16.       @sp.dispose
  17.       @sp = nil
  18.       @sp_a.bitmap.dispose
  19.       @sp_a.dispose
  20.       @sp_a = nil
  21.     end
  22.   end
  23.   def dispose
  24.     super
  25.     disposea
  26.   end
  27.   def visible=(v)
  28.     super
  29.     disposea
  30.   end
  31.   
  32.     def set_enemy(enemy)
  33.     disposea
  34.     self.visible = true
  35.     text = enemy.name
  36.     state_text = make_battler_state_text(enemy, 112, false)
  37.     if state_text != ""
  38.       text += "  " + state_text
  39.     end
  40.     set_text(text, 1)
  41.    
  42.    
  43.    
  44.    
  45.     @hp = nil
  46.     @sp = nil
  47.     @hp_a = nil
  48.     @sp_a = nil
  49.     @hp = Sprite.new
  50.     @hp_a = Sprite.new
  51.     @sp = Sprite.new
  52.     @sp_a = Sprite.new
  53.     @hp.bitmap = Bitmap.new(130,5)
  54.     @hp_a.bitmap= Bitmap.new(130,5)
  55.     @sp.bitmap = Bitmap.new(130,5)
  56.     @sp_a.bitmap = Bitmap.new(130,5)
  57.     color1 = Color.new(150,150,150,255)
  58.     color2 = Color.new(255,100,100,255)
  59.     color3 = Color.new(100,100,255,255)
  60.     @hp.x = 60
  61.     @hp.y = 50
  62.     @hp.z = 10000
  63.     @hp.bitmap.fill_rect(0,0,120,32,color1)
  64.     @sp.x = 450
  65.     @sp.y = 50
  66.     @sp.z = 10000
  67.     @sp.bitmap.fill_rect(0,0,120,32,color1)
  68.     @hpa = 120*enemy.hp/enemy.maxhp
  69.     @spa = 120*enemy.sp/enemy.maxsp
  70.     @hp_a.x = 60
  71.     @hp_a.y = 50
  72.     @hp_a.z = 10000
  73.     @hp_a.bitmap.fill_rect(0,0,@hpa,32,color2)
  74.     @sp_a.x = 450
  75.     @sp_a.y = 50
  76.     @sp_a.z = 10000
  77.     @sp_a.bitmap.fill_rect(0,0,@spa,32,color3)
  78.   end
  79. end
复制代码

点评

没有attr_accessor :need_show_enemy ???已经编辑直接复制去好了  发表于 2014-7-19 20:32
还是不行,提示Window_Help没有方法need_show_enemy=  发表于 2014-7-19 15:56
最后一段脚本是什么意思?看不懂  发表于 2014-7-19 08:53

评分

参与人数 1星屑 +100 收起 理由
︶ㄣ牛排ぶ + 100 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
9557
在线时间
5074 小时
注册时间
2013-6-21
回帖
3459

开拓者贵宾剧作品鉴家

发表于 2014-7-18 22:55:49 | 显示全部楼层
搜索Scene_Battle,只有一个地方对@help_window调用了dispose,就是在主循环之后。因此加入了新定义的方法不能解决问题。
原因是你把几个血条显示的东西定义成Sprite,然后跟Window_Help绑定起来了,这样的话,操作的时候就要考虑整体性。因此考虑重新定义下面两个方法(在Window_Help中)
  1. def dispose
  2.   disposea # 这里是你写disposea的内容,照抄上
  3.   super
  4. end
  5. def visible=(val)
  6.   @hp.visible = val if @hp != nil
  7.   @hp_a.visible = val if @hp_a != nil
  8.   @sp.visible = val if @sp != nil
  9.   @sp_a.visible = val if @sp_a != nil
  10.   super(val)
  11. end
复制代码
这里重新定义了dispose方法和visible=方法,考虑到Scene_Battle中场景未结束时@help_window没有被释放,因此visible=方法也要重定义。

点评

血条还是延迟释放,另外我打字错了,不是帮助释放的地方,是帮助不可见的地方我都调用了disposea  发表于 2014-7-19 09:02
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部