无论地图画面还是菜单画面等等,担任各画面的处理的是场面类。
把所有的场面类列个表,类名和脚本名一一对应。还有,Scene_File 类作为 Scene_Save 和 Scene_Load 的超级类而定义的这个列表没包含。
类 内容
Scene_Title 标题画面
Scene_Map 地图画面
Scene_Menu 菜单画面
Scene_Item 条款画面
Scene_Skill 技能画面
Scene_Equip 装备画面
Scene_Status 状态画面
Scene_Save 储存画面
Scene_Load 载入画面
Scene_End 游戏结束画面
Scene_Battle Battle 战斗画面
Scene_Shop 商店画面
Scene_Name 名字输入画面
Scene_Gameover 游戏结束画面
Scene_Debug 排除故障程序画面
场面类的实例由全局变量$scene保存。这个变量能调出main方法,是继续游戏的构造所在。典型的场面类的骨架如下:
class Scene_Xxxx
def main
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
end
def update
end
end
Graphics.freeze 和 Graphics.transition参看Graphics类的详细资料。
if $scene != self 就是如果全局变量 $scene 指向的对象不是自己的话,Input.update 是更新游戏 pad和键盘的输入信息的方法。参照 Input 类的详细资料。
我们曾经在前面提到过,RGSS 的游戏的最基本的事情就是下面的行为:
loop do
Graphics.update
end
场面类的 main 方法是从这里变复杂来的,那么看看是怎样变复杂的吧:
Main 脚本是最后的脚本,以上的脚本基本都是全部类的定义,所以实际上,真正脚本的开始实行是从这里,Main 脚本除去注释 , 仅有成为 11 行。
begin
Graphics.freeze
$scene = Scene_Title.new
while $scene != nil
$scene.main
end
Graphics.transition(20)
rescue Errno::ENOENT
filename = $!.message.sub("No such file or directory - ", "")
print(" 文件夹 #{ filename} 没被发现。")
end
所谓 begin .. rescue ..end 是异常处理的语句。
Graphics.freeze 和 Graphics.transition 刚才也已提出了。
剩下的 4 行,担当标题画面的处理的 Scene_Title 类的实例,生成全局变量 $scene 。
版权声明:RUBY文档中心的所有文章标明[原创]的均为本站作品,版权属RUBY中文化计划,若转载请注明;标明[翻译]的其外文版权归原作者,译文版权属RUBY中文化计划;标明[转贴]的,若原作者感到侵犯了他的著作权,那么请及时跟主持人联系,我们会尽快更正。