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

Project1

 找回密码
 注册会员
搜索
查看: 1586|回复: 9

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

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3121
在线时间
1860 小时
注册时间
2010-6-19
帖子
1204
发表于 2022-6-7 23:55:16 | 显示全部楼层 |阅读模式

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

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

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

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

Lv5.捕梦者 (版主)

梦石
1
星屑
23963
在线时间
3338 小时
注册时间
2011-7-8
帖子
3925

开拓者

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

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3121
在线时间
1860 小时
注册时间
2010-6-19
帖子
1204
 楼主| 发表于 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
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3121
在线时间
1860 小时
注册时间
2010-6-19
帖子
1204
 楼主| 发表于 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

该怎么写,完全不会。。。
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23963
在线时间
3338 小时
注册时间
2011-7-8
帖子
3925

开拓者

发表于 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 网络脚本 *
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3121
在线时间
1860 小时
注册时间
2010-6-19
帖子
1204
 楼主| 发表于 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
回复 支持 反对

使用道具 举报

Lv3.寻梦者

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

解决了 感谢版主,结贴
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-3-29 20:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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