赞 | 1 |
VIP | 20 |
好人卡 | 8 |
积分 | 3 |
经验 | 6181 |
最后登录 | 2022-8-5 |
在线时间 | 271 小时 |
Lv2.观梦者 神隐的主犯
- 梦石
- 0
- 星屑
- 288
- 在线时间
- 271 小时
- 注册时间
- 2008-2-22
- 帖子
- 7691
|
本帖最后由 八云紫 于 2010-12-23 00:18 编辑
Main
Main 的含义和它的名字是一样的意思, "主要的". Main脚本在 VX 的脚本库, 乃至 XP 里都是一个很重要的脚本.
让我们先来看看 Main 的内容.- #==============================================================================
- # ■ Main
- #------------------------------------------------------------------------------
- # 各定义结束后,从这里开始实际处理。
- #==============================================================================
- # 一些常用的字体
- Font.default_name = ["SimHei", "黑体", "DFKai-SB", "標楷體", "Verdana", "Arial Unicode MS"]
- begin
- Graphics.freeze
- $scene = Scene_Title.new
- $scene.main while $scene != nil
- Graphics.transition(30)
- rescue Errno::ENOENT
- filename = $!.message.sub("无此文件或文件夹 - ", "")
- print("无法找到文件 #{filename}.")
- end
复制代码 重要的部分其实都已经说过了. 忘记的话, 就查查 F1 吧.
Main 脚本里一个重点在于 begin .. rescue.. end 结构. 它的用处是当 begin .. rescue 中级部分出现异常(或者说是错误)的时候, 可以被我们捕获到. 这里捕获的是 "文件找不到" 这个异常. 这就是问什么当我们的素材缺失的时候, RM 会提醒我们什么文件找不到的错误. 具体的部分, 请看 RGSS2异常 部分.
VX 脚本的运行顺序
Main 的位置标志着 RM 脚本的运行起点. 这里就简单的说说 RM 的脚本运行顺序吧. (其实我自己也不知道是不是这样, 不过八九不离十就是了 > <)
解说之前要说明一下几点:
1. 脚本的运行都是从脚本的第一个的第一行开始的.
2. 遇到 class(类) def(方法) module(模块) 都不会主动运行, 除非你去调用它.
3. 脚本都是按顺序执行的, 前提是满足执行条件.
知道这些之后就可以开始说明脚本运行顺序了.
1. 从右边脚本列表的第一个脚本的第一行开始执行.(是的, 很拗口.)
2. 如果遇到 class 的话, 那么 RM 就知道这里是定义类的, 于是它将这个类名保存起来.
3. 如果这个类有父类, 那么 RM 就会去之前的纪录里去查看有没有这个类, 有的话, 就指定它们的继承关系, 没有的话, 就会提示找不到这个类.
4. def 方法 和 module 模块也是类似的.
5. 默认的脚本在 Main 脚本之前都是 类 或者 模块 定义的, 所以在执行到 Main 之前都仅仅是扫描.
6. 到达 Main 脚本后, 真正的执行就是从这里开始了.
7. 由 Main 脚本的调用关系可以延伸到之前所定义的所有类.
8. 当我们选择游戏结束的时候(也就是使用脚本来结束, 这里不包含 exit 和 点击右上角的那个红叉), 才会继续从 Main 脚本里脱离出来继续执行后面的内容.
其实顺序大致就是这样的. 这里呢, 我们就可以注意到一些细节:
1. 在 类 里面的 方法定义是不限制顺序的, 也就是说, 我们可以先使用, 然后再去定义这个方法的内容. 但是早整个脚本库里, 只能是使用到这个类之前的所有资源. 因为它之后的类啦什么的, 都是没有扫描记录的. 所以, RM 并不知道的它之后的内容是什么.
2. 由于 Main 里的内容既不是 class module 也不是 def 定义, 它仅仅是一段脚本, 于是满足调用条件, 所以, 真正的脚本开端就是 Main 脚本.
3. 除非使用到 exit 或者那个红叉来关闭 RM , 否则 Main 后面的内容也是会执行的. 就算是有错误, RM 也是会提醒. 所以, 在某个脚本不需要的情况下, 最好还是批量注释掉.
4. 没有了吧, 大概.
|
|