加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 taroxd 于 2015-2-1 08:43 编辑
暂时没什么用。可能会给日后的偷懒打下基础。
#-------------------------------------------------------------------------- # ● 简化命令窗口的 handler 设置 #-------------------------------------------------------------------------- module Taroxd # Window_Command 的子类 include 后,会自动对场景调用 symbol 对应的 # command_symbol 方法,无需再 set_handler。 module SymbolHandler def handle?(symbol) super || symbol_to_command(symbol) end def call_handler(symbol) @handler[symbol].call if @handler.key?(symbol) command = symbol_to_command(symbol) receiver.send(command) if command end private # 以下方法可由子类覆盖。 # 调用者。默认为当前场景。 def receiver SceneManager.scene end def command_prefix 'command_' end # 返回符号对应的场景方法名。 # 场景不能响应 command_symbol 时,返回 nil。 def symbol_to_command(symbol) sym = :"#{command_prefix}#{symbol}" sym if receiver.respond_to?(sym) end end end
#--------------------------------------------------------------------------
# ● 简化命令窗口的 handler 设置
#--------------------------------------------------------------------------
module Taroxd
# Window_Command 的子类 include 后,会自动对场景调用 symbol 对应的
# command_symbol 方法,无需再 set_handler。
module SymbolHandler
def handle?(symbol)
super || symbol_to_command(symbol)
end
def call_handler(symbol)
@handler[symbol].call if @handler.key?(symbol)
command = symbol_to_command(symbol)
receiver.send(command) if command
end
private
# 以下方法可由子类覆盖。
# 调用者。默认为当前场景。
def receiver
SceneManager.scene
end
def command_prefix
'command_'
end
# 返回符号对应的场景方法名。
# 场景不能响应 command_symbol 时,返回 nil。
def symbol_to_command(symbol)
sym = :"#{command_prefix}#{symbol}"
sym if receiver.respond_to?(sym)
end
end
end
|