|
|
无论地图画面还是菜单画面等等,担任各画面的处理的是场面类。 把所有的场面类列个表,类名和脚本名一一对应。还有,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中文化计划;标明[转贴]的,若原作者感到侵犯了他的著作权,那么请及时跟主持人联系,我们会尽快更正。 | |
|