Project1

标题: Scene_Battle 1中这段代码什么意思? [打印本页]

作者: qq634488405    时间: 2013-3-21 13:51
标题: Scene_Battle 1中这段代码什么意思?
RUBY 代码复制
  1. # 调用战斗返回调用
  2.     if $game_temp.battle_proc != nil
  3.       $game_temp.battle_proc.call(result)
  4.       $game_temp.battle_proc = nil
  5.     end

不懂那个$game_temp.battle_proc.call,求大神解释,谢谢各位了
作者: jhhuang    时间: 2013-3-21 14:24
本帖最后由 jhhuang 于 2013-3-21 14:44 编辑

战斗处理里有这么一句.

  1.       # 设置返回调用
  2.       current_indent = @list[@index].indent
  3.       $game_temp.battle_proc = Proc.new { |n| @branch[current_indent] = n }
复制代码
$game_temp.battle_proc.call(result)就是执行:
{ |result| @branch[current_indent] = result }


这个@branch应该是判断战斗分歧"战斗胜利""失败""逃跑",是Interpreter执行事件命令类里的.
result这个数就是以上3个分歧的其中一个,赋给事件处理里面的@branch,就达到战斗场景结束后,在MAP场景事件里@branch能判断战斗结果.
作者: jhhuang    时间: 2013-3-21 14:54
Proc对块及其环境一直保持着局部变量的作用域,有点类似代替全局变量.
战斗时无法调用其他类中的局部变量.于是$game_temp.battle_proc.call(result)方法就代替其修改了.

在哪里生成Proc.new,块的变量与作用域就处于哪里.
作者: qq634488405    时间: 2013-3-21 15:23
jhhuang 发表于 2013-3-21 14:54
Proc对块及其环境一直保持着局部变量的作用域,有点类似代替全局变量.
战斗时无法调用其他类中的局部变量.于 ...

原来如此,懂了,谢谢




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1