Project1

标题: 关于选择窗口刷新的脚本问题 [打印本页]

作者: 黄亦天    时间: 2011-1-3 10:37
标题: 关于选择窗口刷新的脚本问题
本帖最后由 黄亦天 于 2011-1-4 16:21 编辑

我根据夕阳大大的教程,在ESC菜单里添加了一个“系统设置”选项,
然后我仿造原理复制了一个Scene_End进行改写,改成了我所需的Scene_Shezhi(好吧我英语无力)
目前功能上毫无问题,但是选择之后必须再返回一下再进入才能刷新选项内容,怎么做才能让其按下确认键之后就进行刷新?
以下是我改的脚本:
  1. #==============================================================================
  2. # ** Scene_Shezhi
  3. #------------------------------------------------------------------------------
  4. #  这个类用来执行设置界面的程式。
  5. #==============================================================================

  6. class Scene_Shezhi < Scene_Base

  7.   #--------------------------------------------------------------------------
  8.   # * 程式开始
  9.   #--------------------------------------------------------------------------
  10.   def start
  11.     super
  12.     create_menu_background
  13.     create_command_window
  14.   end
  15.   #--------------------------------------------------------------------------
  16.   # * 程式开始后的处理
  17.   #--------------------------------------------------------------------------
  18.   def post_start
  19.     super
  20.     open_command_window
  21.   end
  22.   #--------------------------------------------------------------------------
  23.   # * 程式终止前的处理
  24.   #--------------------------------------------------------------------------
  25.   def pre_terminate
  26.     super
  27.     close_command_window
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # * 程式终止
  31.   #--------------------------------------------------------------------------
  32.   def terminate
  33.     super
  34.     dispose_command_window
  35.     dispose_menu_background
  36.   end
  37.   #--------------------------------------------------------------------------
  38.   # * 返回之前的画面
  39.   #--------------------------------------------------------------------------
  40.   def return_scene
  41.     $scene = Scene_Menu.new(6)
  42.   end
  43.   #--------------------------------------------------------------------------
  44.   # * 更新帧
  45.   #--------------------------------------------------------------------------
  46.   def update
  47.     super
  48.     update_menu_background
  49.     @command_window.update
  50.     if Input.trigger?(Input::B)
  51.       Sound.play_cancel
  52.       return_scene
  53.     elsif Input.trigger?(Input::C)
  54.       case @command_window.index
  55.       when 0  # 金钱得失提示
  56.         command_Gtishi
  57.       when 1  # 物品得失提示
  58.         command_Wtishi
  59.       when 2  # 队伍系统开关
  60.         command_Psystem
  61.       end
  62.     end
  63.   end
  64.   #--------------------------------------------------------------------------
  65.   # * 针对选单界面更改屏幕背景
  66.   #--------------------------------------------------------------------------
  67.   def update_menu_background
  68.     super
  69.     @menuback_sprite.tone.set(0, 0, 0, 128)
  70.   end
  71.   #--------------------------------------------------------------------------
  72.   # * 创建命令窗口
  73.   #--------------------------------------------------------------------------
  74.   def create_command_window
  75.     if $game_switches[5] == false
  76.       s1 = "关闭得失金钱提示"
  77.     else
  78.       s1 = "开启得失金钱提示"
  79.     end
  80.     if $game_switches[6] == false
  81.       s2 = "关闭得失物品提示"
  82.     else
  83.       s2 = "开启得失物品提示"
  84.     end
  85.     if $game_switches[1] == true
  86.       s3 = "关闭队伍系统"
  87.     else
  88.       s3 = "开启队伍系统"
  89.     end
  90.     @command_window = Window_Command.new(200, [s1, s2, s3])
  91.     @command_window.x = 25
  92.     @command_window.y = 25
  93.     @command_window.openness = 0
  94.   end
  95.   #--------------------------------------------------------------------------
  96.   # * 清除命令窗口
  97.   #--------------------------------------------------------------------------
  98.   def dispose_command_window
  99.     @command_window.dispose
  100.   end
  101.   #--------------------------------------------------------------------------
  102.   # * 展开命令窗口
  103.   #--------------------------------------------------------------------------
  104.   def open_command_window
  105.     @command_window.open
  106.     begin
  107.       @command_window.update
  108.       Graphics.update
  109.     end until @command_window.openness == 255
  110.   end
  111.   #--------------------------------------------------------------------------
  112.   # * 合拢命令窗口
  113.   #--------------------------------------------------------------------------
  114.   def close_command_window
  115.     @command_window.close
  116.     begin
  117.       @command_window.update
  118.       Graphics.update
  119.     end until @command_window.openness == 0
  120.   end
  121. end

  122.   #--------------------------------------------------------------------------
  123.   # * 当执行[金钱得失提示]时的处理
  124.   #--------------------------------------------------------------------------
  125.   def command_Gtishi
  126.     Sound.play_decision
  127.     if $game_switches[5] == false
  128.       s1 = "关闭得失金钱提示"
  129.       $game_switches[5] = true
  130.     else
  131.       s1 = "开启得失金钱提示"
  132.       $game_switches[5] = false
  133.     end
  134.   end
  135.   #--------------------------------------------------------------------------
  136.   # * 当执行[物品得失提示]时的处理
  137.   #--------------------------------------------------------------------------
  138.   def command_Wtishi
  139.     Sound.play_decision
  140.     if $game_switches[6] == false
  141.       s2 = "关闭得失物品提示"
  142.       $game_switches[6] = true
  143.       $game_switches[7] = true
  144.       $game_switches[8] = true
  145.     else
  146.       s2 = "开启得失物品提示"
  147.       $game_switches[6] = false
  148.       $game_switches[7] = false
  149.       $game_switches[8] = false
  150.     end
  151.   end
  152.   #--------------------------------------------------------------------------
  153.   # *  当执行[队伍系统开关]时的处理
  154.   #--------------------------------------------------------------------------
  155.   def command_Psystem
  156.     Sound.play_decision
  157.     if $game_switches[1] == true
  158.       s1 = "关闭队伍系统"
  159.       $game_switches[1] = false
  160.     else
  161.       s1 = "开启队伍系统"
  162.       $game_switches[1] = true
  163.     end
  164.   end

复制代码

作者: fux2    时间: 2011-1-3 10:57
本帖最后由 fux2 于 2011-1-3 11:24 编辑

回复 黄亦天 的帖子

刚才会错意,s1,s2什么的是局部变量,修改了对窗口自然无影响,而创建窗口的时候是通过变量判断文字显示的,所以重新打开会改变。建议增加refresh方法或dispose重新创建窗口。
作者: 黄亦天    时间: 2011-1-4 14:10
自顶一下……
作者: 诡异の猫    时间: 2011-1-4 16:07
  1. #==============================================================================
  2. # ** Scene_Shezhi
  3. #------------------------------------------------------------------------------
  4. #  这个类用来执行设置界面的程式。
  5. #==============================================================================

  6. class Scene_Shezhi < Scene_Base

  7.   #--------------------------------------------------------------------------
  8.   # * 程式开始
  9.   #--------------------------------------------------------------------------
  10.   def start
  11.     super
  12.     create_menu_background
  13.     create_command_window
  14.   end
  15.   #--------------------------------------------------------------------------
  16.   # * 程式开始后的处理
  17.   #--------------------------------------------------------------------------
  18.   def post_start
  19.     super
  20.     open_command_window
  21.   end
  22.   #--------------------------------------------------------------------------
  23.   # * 程式终止前的处理
  24.   #--------------------------------------------------------------------------
  25.   def pre_terminate
  26.     super
  27.     close_command_window
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # * 程式终止
  31.   #--------------------------------------------------------------------------
  32.   def terminate
  33.     super
  34.     dispose_command_window
  35.     dispose_menu_background
  36.   end
  37.   #--------------------------------------------------------------------------
  38.   # * 返回之前的画面
  39.   #--------------------------------------------------------------------------
  40.   def return_scene
  41.     $scene = Scene_Menu.new(6)
  42.   end
  43.   #--------------------------------------------------------------------------
  44.   # * 更新帧
  45.   #--------------------------------------------------------------------------
  46.   def update
  47.     super
  48.     update_menu_background
  49.     @command_window.update
  50.     if Input.trigger?(Input::B)
  51.       Sound.play_cancel
  52.       return_scene
  53.     elsif Input.trigger?(Input::C)
  54.       index = @command_window.index
  55.       case index
  56.       when 0  # 金钱得失提示
  57.         command_Gtishi
  58.       when 1  # 物品得失提示
  59.         command_Wtishi
  60.       when 2  # 队伍系统开关
  61.         command_Psystem
  62.       end
  63.       refresh
  64.       @command_window.index = index
  65.     end
  66.   end
  67.   #--------------------------------------------------------------------------
  68.   # * 针对选单界面更改屏幕背景
  69.   #--------------------------------------------------------------------------
  70.   def update_menu_background
  71.     super
  72.     @menuback_sprite.tone.set(0, 0, 0, 128)
  73.   end
  74.   #--------------------------------------------------------------------------
  75.   # * 创建命令窗口
  76.   #--------------------------------------------------------------------------
  77.   def create_command_window
  78.     if $game_switches[5] == false
  79.       s1 = "关闭得失金钱提示"
  80.     else
  81.       s1 = "开启得失金钱提示"
  82.     end
  83.     if $game_switches[6] == false
  84.       s2 = "关闭得失物品提示"
  85.     else
  86.       s2 = "开启得失物品提示"
  87.     end
  88.     if $game_switches[1] == true
  89.       s3 = "关闭队伍系统"
  90.     else
  91.       s3 = "开启队伍系统"
  92.     end
  93.     @command_window = Window_Command.new(200, [s1, s2, s3])
  94.     @command_window.x = 25
  95.     @command_window.y = 25
  96.     @command_window.openness = 0
  97.   end
  98.   #--------------------------------------------------------------------------
  99.   # * 刷新
  100.   #--------------------------------------------------------------------------
  101.   def refresh
  102.     @command_window.dispose
  103.     if $game_switches[5] == false
  104.       s1 = "关闭得失金钱提示"
  105.     else
  106.       s1 = "开启得失金钱提示"
  107.     end
  108.     if $game_switches[6] == false
  109.       s2 = "关闭得失物品提示"
  110.     else
  111.       s2 = "开启得失物品提示"
  112.     end
  113.     if $game_switches[1] == true
  114.       s3 = "关闭队伍系统"
  115.     else
  116.       s3 = "开启队伍系统"
  117.     end
  118.     @command_window = Window_Command.new(200, [s1, s2, s3])
  119.     @command_window.x = 25
  120.     @command_window.y = 25
  121.   end
  122.   #--------------------------------------------------------------------------
  123.   # * 清除命令窗口
  124.   #--------------------------------------------------------------------------
  125.   def dispose_command_window
  126.     @command_window.dispose
  127.   end
  128.   #--------------------------------------------------------------------------
  129.   # * 展开命令窗口
  130.   #--------------------------------------------------------------------------
  131.   def open_command_window
  132.     @command_window.open
  133.     begin
  134.       @command_window.update
  135.       Graphics.update
  136.     end until @command_window.openness == 255
  137.   end
  138.   #--------------------------------------------------------------------------
  139.   # * 合拢命令窗口
  140.   #--------------------------------------------------------------------------
  141.   def close_command_window
  142.     @command_window.close
  143.     begin
  144.       @command_window.update
  145.       Graphics.update
  146.     end until @command_window.openness == 0
  147.   end
  148.   #--------------------------------------------------------------------------
  149.   # * 当执行[金钱得失提示]时的处理
  150.   #--------------------------------------------------------------------------
  151.   def command_Gtishi
  152.     Sound.play_decision
  153.     if $game_switches[5] == false
  154.       $game_switches[5] = true
  155.     else
  156.       $game_switches[5] = false
  157.     end
  158.   end
  159.   #--------------------------------------------------------------------------
  160.   # * 当执行[物品得失提示]时的处理
  161.   #--------------------------------------------------------------------------
  162.   def command_Wtishi
  163.     Sound.play_decision
  164.     if $game_switches[6] == false
  165.       $game_switches[6] = true
  166.       $game_switches[7] = true
  167.       $game_switches[8] = true
  168.     else
  169.       $game_switches[6] = false
  170.       $game_switches[7] = false
  171.       $game_switches[8] = false
  172.     end
  173.   end
  174.   #--------------------------------------------------------------------------
  175.   # *  当执行[队伍系统开关]时的处理
  176.   #--------------------------------------------------------------------------
  177.   def command_Psystem
  178.     Sound.play_decision
  179.     if $game_switches[1] == true
  180.       $game_switches[1] = false
  181.     else
  182.       $game_switches[1] = true
  183.     end
  184.   end
  185. end
复制代码





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