查看: 2412|回复: 4

[已经解决] SceneManager.snapshot_for_background这有什么用?

[复制链接]
梦石
0
星屑
49
在线时间
157 小时
注册时间
2013-8-14
回帖
155
发表于 2014-8-11 12:34:26 | 显示全部楼层 |阅读模式

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

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

×
[pre lang="ruby" line="1"]  Scene_Title
#--------------------------------------------------------------------------
  # ● 结束处理
  #--------------------------------------------------------------------------
  def terminate
    super
    SceneManager.snapshot_for_background
    dispose_background
    dispose_foreground
  end
[/pre]
[pre lang="ruby" line="1"]  #--------------------------------------------------------------------------
  # ● 生成背景用的场景截图
  #--------------------------------------------------------------------------
  def self.snapshot_for_background
    @background_bitmap.dispose if @background_bitmap
    @background_bitmap = Graphics.snap_to_bitmap
    @background_bitmap.blur
  end
[/pre]


[pre lang="ruby" line="1"]F1
Graphics.snap_to_bitmap
将当前游戏画面截图存为位图对象。

所指向的是显现出来的图像,与调用 freeze 方法没有关联。

所生成的位图在不使用时必须被释放掉。
[/pre]


生成背景用的场景截图然后用在哪?怎么用?

terminate后Graphics.freeze
然后SceneManager.snapshot_for_background到post_start的Graphics.transition
@background_bitmap的作用是什么?

"与调用 freeze 方法没有关联"是指?

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-8-11 12:36:56 | 显示全部楼层
用在菜单背景里面。自己寻找方法调用的轨迹吧。

"与调用 freeze 方法没有关联" 就是指 Graphics.freeze 不影响截图

评分

参与人数 1星屑 +150 收起 理由
VIPArcher + 150 我很赞同

查看全部评分

回复

使用道具 举报

梦石
0
星屑
49
在线时间
157 小时
注册时间
2013-8-14
回帖
155
 楼主| 发表于 2014-8-11 13:59:21 | 显示全部楼层
taroxd 发表于 2014-8-11 12:36
用在菜单背景里面。自己寻找方法调用的轨迹吧。

"与调用 freeze 方法没有关联" 就是指 Graphics.freeze 不 ...


我懂了
是菜单画面后面的暗色背景吧

但那是菜单啊
标题terminate后
只是把截图存到@background_bitmap
然后 地图.main
并不是存到@background_sprite.bitmap
所以也不会显示

我怀疑这段代码摆在标题没有用处
摆在地图才有用

另外@background_bitmap = Graphics.snap_to_bitmap它半路就赋值了...
显示用的图却有(似乎有)模糊...这是为什么?...
也就是说blur是破坏性的("!")?

还有p @background_bitmap.blur的结果是nil啊...



回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-8-11 14:04:08 | 显示全部楼层
本帖最后由 taroxd 于 2014-8-11 14:14 编辑
九靈 发表于 2014-8-11 13:59
我懂了
是菜单画面后面的暗色背景吧


我在技术区刚刚发了一个有关 self 的简单介绍,希望对你有所启发,加深一下你对实例变量的理解
(说实话,你的这些提问是我写那篇文章的原因之一)

先看 Scene_Map#terminate
super 下面的第一行就是 SceneManager.snapshot_for_background
他将这一个对象存入了SceneManager的实例变量里(参考那篇self的文章)

然后我们进入菜单画面时,我们看 Scene_MenuBase#create_background

@background_sprite.bitmap = SceneManager.background_bitmap

这一句话获取了SceneManager的实例变量(见background_bitmap的定义)

--------------------------------

blur确实是破坏性的,你不需要利用blur的返回值
回复

使用道具 举报

梦石
0
星屑
49
在线时间
157 小时
注册时间
2013-8-14
回帖
155
 楼主| 发表于 2014-8-11 14:24:53 | 显示全部楼层
taroxd 发表于 2014-8-11 14:04
我在技术区刚刚发了一个有关 self 的简单介绍,希望对你有所启发,加深一下你对实例变量的理解
(说实话 ...

哦好我看看

另外我发现标题的那段是要在Scene_Load用的......

回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部