Project1

标题: [RGSS3]如何取回所有父类为window的对象 [打印本页]

作者: a774741359    时间: 2013-9-13 21:43
标题: [RGSS3]如何取回所有父类为window的对象
就是所有的窗口对象,在此还有一个问题。
window定义的Z坐标是指的渲染次序?
我想要一个唯一的逻辑坐标,来做窗口的分层,不过貌似这个Z坐标不是唯一的。

如果不明白上面:
我只是想做一个鼠标拖动窗口对象移动的效果,窗口一重叠,没有一个Z坐标根本分不开。
这样说应该明白了,求教了。

作者: asdwds    时间: 2013-9-13 21:57
Z轴越大,就越显示在前面
拖动窗口时变更显示的viewport的z值难道不行吗?虽然我没有很懂这个
作者: a774741359    时间: 2013-9-13 22:12
asdwds 发表于 2013-9-13 21:57
Z轴越大,就越显示在前面
拖动窗口时变更显示的viewport的z值难道不行吗?虽然我没有很懂这个 ...

z
ビューポートの Z 座標です。この値が大きいものほど手前に表示されます。

Z 座標が同一の場合は後に生成されたオブジェクトほど手前に表示されます
---
Z坐标越大,越接近玩家。Z坐标相同,后生成的接近玩家。

作者: LBQ    时间: 2013-9-14 00:46
阁下可以试试修改 self.inherited(s)
作者: Sion    时间: 2013-9-14 11:22
每生成一个窗口就压入数组就可以了:
  1. class Window
  2.   alias_method :initialize_2013914, :initialize
  3.   alias_method :dispose_2013914, :dispose
  4.   def initialize(*args)
  5.     initialize_2013914(*args)
  6.     $windows.push(self)
  7.   end
  8.   def dispose
  9.     dispose_2013914
  10.     $windows.delete(self)
  11.   end
  12. end
  13. class << SceneManager
  14.   alias_method :run_2013914, :run
  15.   def run
  16.     $windows = []
  17.     run_2013914
  18.   end
  19. end
复制代码

作者: a774741359    时间: 2013-9-14 13:33
LBQ 发表于 2013-9-14 00:46
阁下可以试试修改 self.inherited(s)

具体作用呢?
作者: a774741359    时间: 2013-9-14 13:36
Sion 发表于 2013-9-14 11:22
每生成一个窗口就压入数组就可以了:

嗯,我现在就是用的这种方法,每一个场景的窗口创建向变量list写入一个值:就是创建窗口的返回值。
窗口销毁时调用另一个方法移除这个值。
不过基本上 窗口销毁是在场景销毁的同时。

作者: 晴兰    时间: 2013-9-14 13:48
提示: 作者被禁止或删除 内容自动屏蔽
作者: a774741359    时间: 2013-9-14 14:06
晴兰 发表于 2013-9-14 13:48
ObjectSpace.each_object(Window){|x|
  #对x处理
}

不明求解释。




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