Project1

标题: 请问:解释器里面的一个量的值 [打印本页]

作者: kvkv97    时间: 2021-4-13 20:41
标题: 请问:解释器里面的一个量的值
请问:解释器里面的一个量的值

  #--------------------------------------------------------------------------
  # ● 公共事件
  #--------------------------------------------------------------------------
  def command_117
    # 获取公共事件
    common_event = $data_common_events[@parameters[0]]
    # 公共事件有效的情况下
    if common_event != nil
      # 生成子解释器
      @child_interpreter = Interpreter.new(@depth + 1)
      @child_interpreter.setup(common_event.list, @event_id)
    end
    # 继续
    return true
  end

请问:我P @event_id的时候,值为1,但是弄不清楚怎么来的。请问,它在什么地方被赋值了?

作者: kvkv97    时间: 2021-4-13 20:44
另外:@child_interpreter 为什么能在解释器的方法update中调用,怎么不会造成栈过深? 在update中,@child_interpreter.update,怎么不会造成栈过深?
作者: 百里_飞柳    时间: 2021-4-13 21:23
@event_id 就是当前地图上正在执行的那个事件的id
在解释器的 setup 方法中被传入和记录

因为在 update 方法里,特别对 @child_interpreter 进行了判定
如果存在子解释器,就更新子解释器,然后return,不进行自己的更新

不报错是因为不是反复调用自己的update,不构成闭环
具体可以这样说:
A 和 B 都是巡逻的狗(事件解释器)
A 在认真巡逻(在更新事件指令)
忽然发生紧急情况,但是 A 不能走开,于是让 B 去看看(调用公共事件,执行公共事件里的指令)
等到 B 看完回来了(公共事件执行完),A 继续之前的巡逻
所以并没有任何递归





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