| 赞 | 0 |
| VIP | |
| 好人卡 | |
| 积分 | 0 |
| 经验 | |
| 最后登录 | 2017-9-13 |
| 在线时间 | 784 小时 |
- 梦石
- 0
- 星屑
- 48
- 在线时间
- 784 小时
- 注册时间
- 2013-1-4
- 回帖
- 1057
|
发表于 2015-10-8 13:41:56
|
显示全部楼层
本帖最后由 墨凌羽 于 2015-10-8 08:37 编辑
rm制作选单大概分两部分,选单添加和事件绑定。
选单添加大概是这样(具体的可以通读Window_Command这个类)
#示例代码
add_command(Vocab::item, :item, main_commands_enabled)
#方法和参数说明
# add_command(name, symbol, enabled = true, ext = nil)
# name : 指令名称
# symbol : 对应的符号
# enabled : 有效状态的标志
# ext : 任意的扩展数据
而事件绑定大概如下
#示例代码
@command_window = Window_MenuCommand.new
@command_window.set_handler(:item, method(:command_item))
#方法和参数说明
# set_handler(symbol, method)
# symbol : 要绑定的选单的symbol值
# method : 设置的处理方法 (Method 实例)
先是实例化一个window对象,然后调用set_handler来进行事件绑定。第一个参数要和前边add_command里的第二个参数对应,第二个参数是一个Method对象(这个具体可以参考这里)
选单添加一般是写在相应window类内部的
事件绑定则是在和该对象实例化的同一个地方
比如你打算给菜单界面左部添加选单,就先得在Window_MenuCommand类进行选单添加(具体的是写在该类的make_command_list方法里),然后在Scene_Menu里进行事件绑定(具体在该类的create_command_window方法里)。
代码示例(给菜单场景添加一个名为‘笔记’的选单,效果是会跳转到名为Note的场景)
[pre lang="ruby"]#Window_MenuCommand类 选单添加
class Window_MenuCommand < Window_Command
alias :old_make_command_list :make_command_list
#注意,一般为了脚本兼容,不会直接写old_XXX这样的,最好是以脚本作者的名字加日期的格
#式如shitke_151008_make_command_list。alias具体可以参考F1中‘类定义与方法定义’部分
def make_command_list
old_make_command_list
add_command("笔记", :note, main_commands_enabled)
end
end
#Scene_Menu类 事件绑定
class Scene_Menu < Scene_MenuBase
#这里没有同上边一样使用alias,主要是想更清晰的展示‘对象实例化——事件绑定’这一过程
def create_command_window
@command_window = Window_MenuCommand.new
@command_window.set_handler(:item, method(:command_item))
@command_window.set_handler(:skill, method(:command_personal))
@command_window.set_handler(:equip, method(:command_personal))
@command_window.set_handler(:status, method(:command_personal))
@command_window.set_handler(:formation, method(:command_formation))
@command_window.set_handler(:save, method(:command_save))
@command_window.set_handler(:game_end, method(:command_game_end))
@command_window.set_handler(:cancel, method(:return_scene))
#对窗口对象Window_MenuCommand的实例command_window里的note选单进行事件绑定
@command_window.set_handler(:note, method(:command_note))
end
#选单note按下键C(这个C指RMIuput模块的:c,具体包括键盘上的Space, Enter, Z三个按键)
#时执行的具体事件
def command_note
SceneManager.call(Scene_Note) #直接跳转到笔记场景
end
end[/pre]
P.S要想搞清楚这些最好还是去熟悉Window类(看F1)以及通读Window_Base、Window_Selectable、Window_Command这三个类。把这些搞清楚那么在RM里创建窗口亦或是选单都毫无问题和难度。 |
|