Project1

标题: SceneManager.snapshot_for_background这有什么用? [打印本页]

作者: 九靈    时间: 2014-8-11 12:34
标题: SceneManager.snapshot_for_background这有什么用?
RUBY 代码复制
  1. Scene_Title
  2. #--------------------------------------------------------------------------
  3.   # ● 结束处理
  4.   #--------------------------------------------------------------------------
  5.   def terminate
  6.     super
  7.     SceneManager.snapshot_for_background
  8.     dispose_background
  9.     dispose_foreground
  10.   end

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 生成背景用的场景截图
  3.   #--------------------------------------------------------------------------
  4.   def self.snapshot_for_background
  5.     @background_bitmap.dispose if @background_bitmap
  6.     @background_bitmap = Graphics.snap_to_bitmap
  7.     @background_bitmap.blur
  8.   end



RUBY 代码复制
  1. F1
  2. Graphics.snap_to_bitmap
  3. 将当前游戏画面截图存为位图对象。
  4.  
  5. 所指向的是显现出来的图像,与调用 freeze 方法没有关联。
  6.  
  7. 所生成的位图在不使用时必须被释放掉。



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

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

"与调用 freeze 方法没有关联"是指?
作者: taroxd    时间: 2014-8-11 12:36
用在菜单背景里面。自己寻找方法调用的轨迹吧。

"与调用 freeze 方法没有关联" 就是指 Graphics.freeze 不影响截图
作者: 九靈    时间: 2014-8-11 13:59
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啊...




作者: taroxd    时间: 2014-8-11 14:04
本帖最后由 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的返回值
作者: 九靈    时间: 2014-8-11 14:24
taroxd 发表于 2014-8-11 14:04
我在技术区刚刚发了一个有关 self 的简单介绍,希望对你有所启发,加深一下你对实例变量的理解
(说实话 ...

哦好我看看

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






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