Project1

标题: 标题图形和窗口不被释放的问题。 [打印本页]

作者: 我是大仙    时间: 2015-1-27 17:01
标题: 标题图形和窗口不被释放的问题。
本帖最后由 我是大仙 于 2015-1-28 12:00 编辑


我已经在最后一行提到 $scene被改变

并且Scene_Ka 也有 main,也可以运行并刷新游戏图像
但是标题图像和窗口就是不被释放。
不是说好了要释放么↓



我还是给个附件吧,以防不理解。
自学成才.zip (223.63 KB, 下载次数: 48)
作者: 你最珍贵    时间: 2015-1-27 22:33
什么鬼,没看懂你说什么鬼
作者: Thylakoid    时间: 2015-1-28 00:09
我也不是特别清楚你想表达的问题,仅从图上看,我有以下理解,理解不对的话还请见谅。按图上的顺序,你的算法顺序是先切换Scene,后开始loop do逐帧刷新,这样一来因为Scene已经切换完毕,所以无法跳出循环,自然也不会执行接下来的命令。既然以画面切换为中断循环的条件,那么执行画面切换的过程应该在loop do这个循环过程中,也就是说,应该把Scene的切换放到到对应的刷新方法(update)的定义里。
作者: 我是大仙    时间: 2015-1-28 11:48
Thylakoid 发表于 2015-1-28 00:09
我也不是特别清楚你想表达的问题,仅从图上看,我有以下理解,理解不对的话还请见谅。按图上的顺序,你的算 ...

我给你工程好了,我的确把Scene的切换放到了 update里了。
自学成才.zip (223.63 KB, 下载次数: 56)
作者: RyanBern    时间: 2015-1-28 12:53
LZ自学不是很到位哈,先说发现的几个问题,改正就可以了。
1.点击“咔”选项后,生成了一个图片。(在脚本中是变量@wsdx)。场景离开Scene_Title后,这个图片应该被释放。
下面这句应该放到Scene_Title释放那里。
RUBY 代码复制
  1. if @wsdx != nil
  2.   @wsdx.bitmap.dispose
  3.   @wddx.dispose
  4. end

如果LZ是想在Scene_Ka中显示这张图片,请在Scene_Ka对象中生成它,而不是在Scene_Title中生成。当然,生成之后也别忘释放。
2.LZ之所以能看到标题图形和窗口,不是因为它没有释放,而是因为画面处于冻结状态,而处于冻结状态的画面,Graphics.update不起作用。因此,在每个Scene类对象的loop do~end之前,都应该有一句Graphics.transition。这句话是让画面过渡,同时解除画面冻结的状态。
3.loop do~end中应该有三个update(或者至少是两个):Graphics.update,Input.update,update。LZ既然用了输入判断,那么为啥不加Input.update啊?

最后,更改后的Scene_Ka:
RUBY 代码复制
  1. class Scene_Ka
  2.   def main
  3.     Graphics.transition
  4.     loop do
  5.       Graphics.update
  6.       Input.update
  7.       shuaxing
  8.       if $scene != self
  9.         break
  10.       end
  11.     end
  12.   end
  13.   def shuaxing
  14.     if Input.trigger?(Input::Z)
  15.       $scene = Scene_Title.new
  16.     end
  17.   end
  18. end

另外Scene_Title那里加个@wsdx的释放,或者把生成图片转移到Scene_Ka中去。

作者: 我是大仙    时间: 2015-1-28 15:06
RyanBern 发表于 2015-1-28 12:53
LZ自学不是很到位哈,先说发现的几个问题,改正就可以了。
1.点击“咔”选项后,生成了一个图片。(在脚本 ...

哇,太感谢了。
来,啵儿一个~(开玩笑的)




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