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

Project1

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

[已经解决] 请问:为什么要把@battleback_sprite的位图释放掉?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3925
在线时间
254 小时
注册时间
2013-10-13
帖子
790
跳转到指定楼层
1
发表于 2021-2-21 15:24:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
请问:为什么要把@battleback_sprite的位图释放掉?

   # 战斗背景的文件名与现在情况有差异的情况下
    if @battleback_name != $game_temp.battleback_name
      @battleback_name = $game_temp.battleback_name
      if @battleback_sprite.bitmap != nil
        @battleback_sprite.bitmap.dispose
      end
      @battleback_sprite.bitmap = RPG::Cache.battleback(@battleback_name)
      @battleback_sprite.src_rect.set(0, 0, 640, 320)
    end
请问,为什么要把@battleback_sprite.bitmap释放掉?

Lv4.逐梦者

梦石
0
星屑
7946
在线时间
1182 小时
注册时间
2007-7-29
帖子
2055
2
发表于 2021-2-22 03:33:33 | 只看该作者
因为要生成新的bitmap,旧的bitmap最好的做法就是释放,让内存可以被回收。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7921
在线时间
1049 小时
注册时间
2012-4-3
帖子
1271

开拓者

3
发表于 2021-2-22 18:14:29 手机端发表。 | 只看该作者
窗口的描绘也是一个原理,旧的clear之后,新的再生成。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
14048
在线时间
2070 小时
注册时间
2016-9-20
帖子
844
4
发表于 2021-2-25 13:42:16 | 只看该作者
这个问题问得好 , 既然下方会覆盖为什么还要删的呢
@enghao_lim 他说的对 , 我就用自己比喻法說一下詳情 , 虽然@battleback_sprite.bitmap = RPG::Cache.battleback(@battleback_name)看出之後他的bitmap会被新的战斗背景图片覆盖 ,图片精灵(sprite)的精灵虽然指针 , 但其实内存里还是有变成一个没有用旧图片 , 这个旧图片没有指针, 但图像还是占用了内存, 过一段时间引擎会自动清除这种旧图片 , 一旦积聚多, 一下子清除就会游戏卡帧完全静止, 其他图片精灵(sprite)叠加就会加重这个问题, 因此清除是有道理的
内容仅供参考,
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

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

开拓者贵宾剧作品鉴家

5
发表于 2021-2-25 23:39:08 | 只看该作者
本帖最后由 RyanBern 于 2021-2-25 23:42 编辑

楼上的各位存在一个误区。

注意这里的 @battleback_sprite.bitmap 是用 RPG::Cache 方式生成的(高速缓存),而高速缓存的作用就是在内存里面留有一个图片的副本,方便下次载入的时候直接从内存读而不是从外部文件直接生成。所以原则上使用 RPG::Cache 产生的 Bitmap 不需要被释放。详见 F1 中的 RPG::Cache 模块。真正需要释放的是使用 Bitmap.new 方法生成的位图(例如窗口的 contents)。

那么为什么默认脚本还是释放了?怕是只能理解为写默认脚本的人忘记了这回事了。

点评

RyanBern 出手果然不一样。希望你能多多指点!  发表于 2021-2-26 15:27
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-27 08:59

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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