| mike1735 发表于 2014-2-9 19:20 ![]() 这个问题我用类变量解决了。但我还有个问题。首先我确实使用的return。如下。而且为了记录光标位置我用了@l ...
 我们知道 场景类一般会调用create_command_window来创建命令窗口
 这个方法里面一定有一句@some_window = Window_Something.new(perhaps args)
 如果这个语句只执行一次 那么显然会保存位置
 但是场景每次出现都会执行 因为
 #--------------------------------------------------------------------------  # ● 主逻辑  #--------------------------------------------------------------------------  def main    start    post_start    update until scene_changing?    pre_terminate    terminate  end
上面这一段来自Scene_Base#-------------------------------------------------------------------------- 
  # ● 主逻辑 
  #-------------------------------------------------------------------------- 
  def main 
    start 
    post_start 
    update until scene_changing? 
    pre_terminate 
    terminate 
  end 
def start    super    create_command_window    create_gold_window    create_status_window  end
这一段来自Scene_Menudef start 
    super 
    create_command_window 
    create_gold_window 
    create_status_window 
  end 
所以 尽管场景类还是原来的(压栈退栈) 但是窗口已经被重新创建了
 而选择的位置是保存在窗体实例中的
 所以 选择位置不能是实例变量 而必须是全局或者类变量
 由此易知 如果退出场景时  选择位置保存在场景实例中 就不需要类变量了
 |