设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2060|回复: 2
打印 上一主题 下一主题

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
165
在线时间
809 小时
注册时间
2013-8-23
帖子
804

开拓者

跳转到指定楼层
1
发表于 2014-7-18 17:05:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

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

血条定义(Window_Help中)
RUBY 代码复制
  1. def set_enemy(enemy)
  2.     @hp = nil
  3.     @sp = nil
  4.     @hp_a = nil
  5.     @sp_a = nil
  6.     @hp = Sprite.new
  7.     @hp_a = Sprite.new
  8.     @sp = Sprite.new
  9.     @sp_a = Sprite.new
  10.     @hp.bitmap = Bitmap.new(130,5)
  11.     @hp_a.bitmap= Bitmap.new(130,5)
  12.     @sp.bitmap = Bitmap.new(130,5)
  13.     @sp_a.bitmap = Bitmap.new(130,5)
  14.     color1 = Color.new(150,150,150,255)
  15.     color2 = Color.new(255,100,100,255)
  16.     color3 = Color.new(100,100,255,255)
  17.     @hp.x = 60
  18.     @hp.y = 50
  19.     @hp.z = 10000
  20.     @hp.bitmap.fill_rect(0,0,120,32,color1)
  21.     @sp.x = 450
  22.     @sp.y = 50
  23.     @sp.z = 10000
  24.     @sp.bitmap.fill_rect(0,0,120,32,color1)
  25.     @hpa = 120*enemy.hp/enemy.maxhp
  26.     @spa = 120*enemy.sp/enemy.maxsp
  27.     @hp_a.x = 60
  28.     @hp_a.y = 50
  29.     @hp_a.z = 10000
  30.     @hp_a.bitmap.fill_rect(0,0,@hpa,32,color2)
  31.     @sp_a.x = 450
  32.     @sp_a.y = 50
  33.     @sp_a.z = 10000
  34.     @sp_a.bitmap.fill_rect(0,0,@spa,32,color3)
  35. end

释放(Window_Help中)
RUBY 代码复制
  1. def disposea
  2.     if @hp != nil
  3.       @hp.bitmap.dispose
  4.       @hp.dispose
  5.       @hp_a.bitmap.dispose
  6.       @hp_a.dispose
  7.       @sp.bitmap.dispose
  8.       @sp.dispose
  9.       @sp_a.bitmap.dispose
  10.       @sp_a.dispose
  11.       @hp = nil
  12.       @sp = nil
  13.       @hp_a = nil
  14.       @sp_a = nil
  15.     end
  16.   end

Scene_Battle中每个设置帮助窗口不可见的地方我都调用了disposea,但实际战斗时帮助窗口瞬间消失时血条总要等一段时间才消失,而不是同时消失,怎么让他们同时消失

点评

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

评分

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

查看全部评分

遗失的签名。。。

Lv1.梦旅人

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
帖子
1316
2
发表于 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 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

3
发表于 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
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-9-21 21:59

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表