Project1

标题: 窗口图片释放 [打印本页]

作者: 黑米馒头    时间: 2022-6-7 23:55
标题: 窗口图片释放
我在窗口里放了张图片,切换场景的时候已经加入释放了,怎么切换场景的时候图片要等几秒才会消失?是不是在窗口里面还要加上释放图片

RUBY 代码复制
  1. #==============================================================================
  2. # ■ Window_DuiTouxiang
  3. #------------------------------------------------------------------------------
  4. #  处理地图界面全体队员头像的类
  5. #==============================================================================
  6.  
  7. class Window_DuiTouxiang < Window_Base
  8.   #--------------------------------------------------------------------------
  9.   # ● 初始化对像
  10.   #--------------------------------------------------------------------------
  11.   def initialize
  12.     super(530, -12, 282, 90)
  13.     self.contents = Bitmap.new(width - 32, height - 32)
  14.     self.contents.font.size = 12
  15.     self.contents.font.name = (["黑体"])
  16.     self.opacity = 0
  17.     refresh
  18.   end  
  19.   #--------------------------------------------------------------------------
  20.   # ● 刷新
  21.   #--------------------------------------------------------------------------
  22.   def refresh
  23.     # 清除自身描绘
  24.     self.contents.clear
  25.     for i in 0...$game_party.actors.size
  26.       x = i * -49
  27.       actor = $game_party.actors[i]
  28.       # 头像
  29.       draw_actor_face_jiemian(actor, x+276-80, 0)
  30.       # 头像框
  31.       draw_map_tx_duiwu(actor, x+276-80, 0)
  32.       # 等级
  33.       draw_actor_level_jiemian(actor, x+247-80, 23)
  34.       # 气血条
  35.       draw_map_hp_duiwu(actor, x+278-80, 46)
  36.       # 魔法条
  37.       draw_map_sp_duiwu(actor, x+278-80, 52)
  38.     end
  39.     # 队伍人数大于1
  40.     if $game_party.actors.size > 1
  41.       # 显示队长标记图片
  42.       @duibiao = Sprite.new
  43.       @duibiao.bitmap = Bitmap.new("Graphics/Pictures/图片显示/头像/头像框ui/队标")
  44.       @duibiao.x = 780
  45.       @duibiao.y = 7
  46.       @duibiao.z = 300
  47.       # 显示窗口
  48.       self.visible = true
  49.     else
  50.       # 隐藏窗口
  51.       self.visible = false
  52.     end   
  53.   end
  54.   #--------------------------------------------------------------------------
  55.   # 以下为插件功能,增加判定同步刷新头像
  56.   alias refresh_fix_refresh refresh unless $@
  57.   alias refresh_fix_update update unless $@
  58.   #--------------------------------------------------------------------------
  59.   # ● 刷新
  60.   #--------------------------------------------------------------------------  
  61.   def refresh(*args)
  62.     @datas = [] if @datas.nil?
  63.     @datas.clear
  64.     $game_party.actors.each {|item|@datas << [item.id, item.hp, item.sp, item.exp]}
  65.     refresh_fix_refresh(*args)
  66.   end
  67.   #--------------------------------------------------------------------------
  68.   # ● 刷新画面
  69.   #--------------------------------------------------------------------------  
  70.   def update(*args)
  71.     refresh_fix_update(*args)
  72.     return refresh if ($game_party.actors.size != (@datas ? @datas.size : 0))
  73.     $game_party.actors.each_with_index {|item, index|
  74.     next if @datas[index] == [item.id, item.hp, item.sp, item.exp]
  75.     break refresh}
  76.   end
  77. end

作者: guoxiaomi    时间: 2022-6-8 15:14
结合代码看了好几遍才明白你在问什么……
答:是的,请改写 dispose 方法,添加 @duibiao.dispose
作者: 黑米馒头    时间: 2022-6-8 17:01
guoxiaomi 发表于 2022-6-8 15:14
结合代码看了好几遍才明白你在问什么……
答:是的,请改写 dispose 方法,添加 @duibiao.dispose ...

直接在窗口里添加
def dispose
@duibiao. dispose
end
这样吗?
还有 我在里面做了个判定,当队友大于1 显示对标图片,不然就不显示(释放图片)释放之后是不是还要刷新一下?这些全写窗口里还是写在场景里~
作者: 黑米馒头    时间: 2022-6-8 19:35
guoxiaomi 发表于 2022-6-8 15:14
结合代码看了好几遍才明白你在问什么……
答:是的,请改写 dispose 方法,添加 @duibiao.dispose ...

那个插件是别人帮我下的,看不懂,
alias refresh_fix_dispose dispose unless $@
def refresh(*args)
  refresh_fix_dispose(*args)
end
end

该怎么写,完全不会。。。
作者: guoxiaomi    时间: 2022-6-8 19:42
本帖最后由 guoxiaomi 于 2022-6-8 19:43 编辑

你这个window没有定义dispose方法,可以用super起到跟alias一样的效果
  1. def dispose
  2.   @duibiao.dispose if @duibiao.is_a?(Sprite)
  3.   super
  4. end
复制代码

作者: 黑米馒头    时间: 2022-6-8 20:28
guoxiaomi 发表于 2022-6-8 19:42
你这个window没有定义dispose方法,可以用super起到跟alias一样的效果

这个释放放进去之后可以释放了,是不是还要刷新一下的,因为队友离队的时候,队标没有刷新,还是显示着,切换其他窗口才会刷新掉
作者: 黑米馒头    时间: 2022-6-9 11:28
guoxiaomi 发表于 2022-6-8 19:42
你这个window没有定义dispose方法,可以用super起到跟alias一样的效果

解决了 感谢版主,结贴




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