查看: 2439|回复: 9

[已经解决] 窗口图片释放

[复制链接]
梦石
0
星屑
3850
在线时间
1899 小时
注册时间
2010-6-19
回帖
917
发表于 2022-6-7 23:55:16 | 显示全部楼层 |阅读模式

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

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

×
我在窗口里放了张图片,切换场景的时候已经加入释放了,怎么切换场景的时候图片要等几秒才会消失?是不是在窗口里面还要加上释放图片

[pre lang="ruby"]#==============================================================================
# ■ Window_DuiTouxiang
#------------------------------------------------------------------------------
#  处理地图界面全体队员头像的类
#==============================================================================

class Window_DuiTouxiang < Window_Base
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  def initialize
    super(530, -12, 282, 90)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.size = 12
    self.contents.font.name = (["黑体"])
    self.opacity = 0
    refresh
  end  
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    # 清除自身描绘
    self.contents.clear
    for i in 0...$game_party.actors.size
      x = i * -49
      actor = $game_party.actors
      # 头像
      draw_actor_face_jiemian(actor, x+276-80, 0)
      # 头像框
      draw_map_tx_duiwu(actor, x+276-80, 0)
      # 等级
      draw_actor_level_jiemian(actor, x+247-80, 23)
      # 气血条
      draw_map_hp_duiwu(actor, x+278-80, 46)
      # 魔法条
      draw_map_sp_duiwu(actor, x+278-80, 52)
    end
    # 队伍人数大于1
    if $game_party.actors.size > 1
      # 显示队长标记图片
      @duibiao = Sprite.new
      @duibiao.bitmap = Bitmap.new("Graphics/Pictures/图片显示/头像/头像框ui/队标")
      @duibiao.x = 780
      @duibiao.y = 7
      @duibiao.z = 300
      # 显示窗口
      self.visible = true
    else
      # 隐藏窗口
      self.visible = false
    end   
  end
  #--------------------------------------------------------------------------
  # 以下为插件功能,增加判定同步刷新头像
  alias refresh_fix_refresh refresh unless $@
  alias refresh_fix_update update unless $@
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------  
  def refresh(*args)
    @datas = [] if @datas.nil?
    @datas.clear
    $game_party.actors.each {|item|@datas << [item.id, item.hp, item.sp, item.exp]}
    refresh_fix_refresh(*args)
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面
  #--------------------------------------------------------------------------  
  def update(*args)
    refresh_fix_update(*args)
    return refresh if ($game_party.actors.size != (@datas ? @datas.size : 0))
    $game_party.actors.each_with_index {|item, index|
    next if @datas[index] == [item.id, item.hp, item.sp, item.exp]
    break refresh}
  end
end  
[/pre]
梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

发表于 2022-6-8 15:14:38 | 显示全部楼层
结合代码看了好几遍才明白你在问什么……
答:是的,请改写 dispose 方法,添加 @duibiao.dispose
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复

使用道具 举报

梦石
0
星屑
3850
在线时间
1899 小时
注册时间
2010-6-19
回帖
917
 楼主| 发表于 2022-6-8 17:01:36 | 显示全部楼层
guoxiaomi 发表于 2022-6-8 15:14
结合代码看了好几遍才明白你在问什么……
答:是的,请改写 dispose 方法,添加 @duibiao.dispose ...

直接在窗口里添加
def dispose
@duibiao. dispose
end
这样吗?
还有 我在里面做了个判定,当队友大于1 显示对标图片,不然就不显示(释放图片)释放之后是不是还要刷新一下?这些全写窗口里还是写在场景里~

点评

参见你的56-57行,需要alias;需要判定@duibiao是否为Sprite  发表于 2022-6-8 17:14
回复

使用道具 举报

梦石
0
星屑
3850
在线时间
1899 小时
注册时间
2010-6-19
回帖
917
 楼主| 发表于 2022-6-8 19:35:12 | 显示全部楼层
guoxiaomi 发表于 2022-6-8 15:14
结合代码看了好几遍才明白你在问什么……
答:是的,请改写 dispose 方法,添加 @duibiao.dispose ...

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

该怎么写,完全不会。。。
回复

使用道具 举报

梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

发表于 2022-6-8 19:42:29 | 显示全部楼层
本帖最后由 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
复制代码

评分

参与人数 1赞 +1 收起 理由
taeckle + 1 大神威武!

查看全部评分

熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复

使用道具 举报

梦石
0
星屑
3850
在线时间
1899 小时
注册时间
2010-6-19
回帖
917
 楼主| 发表于 2022-6-8 20:28:26 | 显示全部楼层
guoxiaomi 发表于 2022-6-8 19:42
你这个window没有定义dispose方法,可以用super起到跟alias一样的效果

这个释放放进去之后可以释放了,是不是还要刷新一下的,因为队友离队的时候,队标没有刷新,还是显示着,切换其他窗口才会刷新掉

点评

是你写的问题,你在队友离队的时候刷新一下就行  发表于 2022-6-8 22:19
估计是你那个插件的问题。。。  发表于 2022-6-8 22:05
回复

使用道具 举报

梦石
0
星屑
3850
在线时间
1899 小时
注册时间
2010-6-19
回帖
917
 楼主| 发表于 2022-6-9 11:28:57 | 显示全部楼层
guoxiaomi 发表于 2022-6-8 19:42
你这个window没有定义dispose方法,可以用super起到跟alias一样的效果

解决了 感谢版主,结贴
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部