本帖最后由 RyanBern 于 2016-7-16 17:17 编辑
@about 防论坛解析错误
首先,千万不要加这几句
# 释放命令窗口 @command_window.dispose # 释放标题图形 @sprite.bitmap.dispose @sprite.dispose
# 释放命令窗口
@command_window.dispose
# 释放标题图形
@sprite.bitmap.dispose
@sprite.dispose
因为这几句的含义是释放命令窗口和标题,这些对象没有用完是千万不能释放的,并且你在update里面也对命令窗口进行刷新操作。一个窗口如果被释放后是不能刷新的。
正确的做法是改Scene_Title的三个地方,第一个就是update方法
def update # Update command window @command_window.update if @command_window.active update_command return end if @about update_about return end end
def update
# Update command window
@command_window.update
if @command_window.active
update_command
return
end
if @about
update_about
return
end
end
这里的update需要判断刷新的内容,然后分别执行刷新的操作。
第二个地方就是要新加入这个方法:
def update_command # If C button was pressed if Input.trigger?(Input::C) # Branch by command window cursor position case @command_window.index when 0 # New game command_new_game when 1 # Continue command_continue when 2 # Shutdown command_shutdown end end end
def update_command
# If C button was pressed
if Input.trigger?(Input::C)
# Branch by command window cursor position
case @command_window.index
when 0 # New game
command_new_game
when 1 # Continue
command_continue
when 2 # Shutdown
command_shutdown
end
end
end
这个方法的作用其实是将原来的update拆开,这样方便代码的管理。在这里你需要把调用command_about的命令加在合适的位置上。
最后一个地方是你的command_about和新加入的update_about。首先你原来的方式有问题在于你生成完标题图形后马上就执行了if Input.trigger?,这样的效果就是你生成的图片在一瞬间被释放了,因此你就看不到效果而只能听见音效。正确的做法是将command_about写成这样:
def command_about $game_system.se_play($data_system.decision_se) @title_about = Sprite.new @title_about.bitmap = RPG::Cache.title("001about") # 请注意这两句,这是用来控制update方法该刷新哪个对象 @command_window.active = false @command_window.visible = false @about = true end
def command_about
$game_system.se_play($data_system.decision_se)
@title_about = Sprite.new
@title_about.bitmap = RPG::Cache.title("001about")
# 请注意这两句,这是用来控制update方法该刷新哪个对象
@command_window.active = false
@command_window.visible = false
@about = true
end
然后追加update_about定义:
def update_about if Input.trigger?(Input::C) $game_system.se_play($data_system.decision_se) @title_about.bitmap.dispose @title_about.dispose # 同样注意这两句的控制 @command_window.active = true @command_window.visible = true @about = false return end end
def update_about
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
@title_about.bitmap.dispose
@title_about.dispose
# 同样注意这两句的控制
@command_window.active = true
@command_window.visible = true
@about = false
return
end
end
以上代码都是在Scene_Title内部进行操作,未测试。有问题请回帖说明。 |