设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1879|回复: 8
打印 上一主题 下一主题

[已经过期] Interpreter.new的东西真诡异

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3970
在线时间
254 小时
注册时间
2013-10-13
帖子
794
跳转到指定楼层
1
发表于 2015-10-15 23:41:14 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
1,
为什么Interpreter.new需要循环?XP的
在地图场景中,方法update中,@map_interpreter.new(0,false)为什么要放在里面循环?
2,
def update
      # 尝试执行事件列表、返回值为 false 的情况下
      if execute_command == false
        return
      end
  end
为什么 execute_command 要赋值为 false ? false 不是不执行了吗?
3,
  def setup_starting_event
    # 循环 (地图事件)
    for event in $game_map.events.values
      # 如果找到了启动中的事件
      if event.starting
        # 如果不是自动执行
        if event.trigger < 3
          # 清除启动中标志
          event.clear_starting
        end
        # 设置事件
        setup(event.list, event.id)
      end
    end
  end
  event.clear_starting不是不启动事件了吗?setup(event.list, event.id)还能继续吗?
4,
我查下了, execute_command这个方法没被调用,为什么地图能用这个方法execute_command里面的指令???

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21015
在线时间
9338 小时
注册时间
2012-6-19
帖子
7107

开拓者短篇九导演组冠军

9
发表于 2015-10-20 08:39:29 | 只看该作者
本帖最后由 喵呜喵5 于 2015-10-20 08:43 编辑

回一楼点评:
然后呢?你想说什么?
根据语境来看,在这里return的主要作用是用来结束这个方法,调用这个方法的代码并不会去依赖这个方法的返回值
你这边的总结给我的感觉就是整个都乱七八糟的,特别是这句:“@list空值则@list不返回值(自然@list.size不被调动)”

回四楼点评:
关于 execute_command 的返回值为false,请先看懂这个方法的代码,看不懂的话请告诉我你究竟哪里看不懂了


另外不知道你是通过什么途径学习脚本的,从你的回复中感觉你的整个逻辑都很混乱,个人建议你通过一些书籍(例如这本动物书:http://pan.baidu.com/s/1jGtU790 ,或者大名鼎鼎的镐头书)系统的重新学习一遍Ruby语言
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21015
在线时间
9338 小时
注册时间
2012-6-19
帖子
7107

开拓者短篇九导演组冠军

8
发表于 2015-10-19 12:06:40 | 只看该作者
kvkv97 发表于 2015-10-16 17:45
1,第一问题准确描述应该是:$game_system.map_interpreter.update为什么需要循环?2,
“如果一个变量之前 ...

你这四个问题特么和你一楼写的完全不一样好吗?

1.执行事件是在$game_system.map_interpreter.update中做的,不循环,事件执行一步就停了,具体请自己去看对应update部分的代码

2.会,具体来说,方法定义再更早之前就已经完成了

3.是

4.nil没有size方法
@list 为nil 时执行 @list.size 自然报错

评分

参与人数 1星屑 +100 收起 理由
丿梁丶小柒 + 100 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
90
在线时间
357 小时
注册时间
2006-3-3
帖子
181
7
发表于 2015-10-19 11:14:22 | 只看该作者
我只想说……这是VX区……
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3970
在线时间
254 小时
注册时间
2013-10-13
帖子
794
6
 楼主| 发表于 2015-10-18 17:32:05 | 只看该作者
求解答!!!!!!!!!!!!!!!!!!!
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3970
在线时间
254 小时
注册时间
2013-10-13
帖子
794
5
 楼主| 发表于 2015-10-17 17:26:06 | 只看该作者
顶起!!!
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3970
在线时间
254 小时
注册时间
2013-10-13
帖子
794
4
 楼主| 发表于 2015-10-16 17:45:57 | 只看该作者
本帖最后由 kvkv97 于 2015-10-16 17:49 编辑

1,第一问题准确描述应该是:$game_system.map_interpreter.update为什么需要循环?
  1. class Scene_Map
  2.   def main
  3.     loop do
  4.       update
  5.     end
  6.   end
  7.   def update
  8.     $game_system.map_interpreter.update   
  9.   end
  10. end
复制代码
2,
“如果一个变量之前没有被赋值过那就执行这个类中的同名变量,比如这个会执行 def execute_command 这个类 判断 execute_command 的返回值”的意思是:条件语句if execute_command == false在做出判断前,会自动执行def execute_command再做判断吗?
3,

  1.   def setup_starting_event
  2.     # 循环 (地图事件)
  3.     for event in $game_map.events.values
  4.       # 如果找到了启动中的事件
  5.       if event.starting
  6.         # 如果不是自动执行
  7.         if event.trigger < 3
  8.           # 清除启动中标志
  9.           event.clear_starting
  10.         end
  11.         # 设置事件
  12.         setup(event.list, event.id)
  13.       end
  14.     end
  15.   end
复制代码
这个的意思是:如果找到了启动中的事件,就设置事件执行事件,然后再作判断if event.trigger < 3执行语句event.clear_starting吗?
4,
  # 什么都没有设置的情况下
  if @list == nil
     return
  end
的意思是:在没启动事件前,@list是空的,不设置返回值;如果没这个设置的话,那么,为什么def execute_command /if @index >= @list.size - 1 的size会出现空类的方法而报错?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1281 小时
注册时间
2006-8-27
帖子
590
3
发表于 2015-10-16 00:46:37 | 只看该作者
本帖最后由 wbsy8241 于 2015-10-16 00:48 编辑

1. 我没在 地图场景中 发现 @map_interpreter.new(0,false)
   地图场景中会刷新 公共事件(interpreter)
   不循环刷新 怎么执行事件? 怎么执行自动开始的事件?怎么执行并行事件 里面的等待不刷新要怎么执行?
2. if execute_command == false
   这句话的意思是“如果  execute_command 返回的是 false”
   “==” 不是赋值 是判断
   2PS: 如果一个变量之前没有被赋值过 那就执行 这个类中的同名 类, 比如这个会执行 def execute_command 这个类 判断 execute_command 的返回值
3.不让事件立即执行啊 事件还是要载入的 还有接触开启之类的啊
4.参见 第二条  execute_command 已经被调用了


你可以看看帮助文件 基本的赋值 判断 都没搞清楚。

点评

请帮我看看  发表于 2015-10-16 17:49
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21015
在线时间
9338 小时
注册时间
2012-6-19
帖子
7107

开拓者短篇九导演组冠军

2
发表于 2015-10-16 00:45:49 | 只看该作者
没用过xp,不一定对:
1.A.new 和 @a.new 是不同的,请先区分开来
2.为什么要赋值为false,事件不就不执行了吗
因为事件已经全部执行完了,现在希望事件不执行了,所以赋值为false
3.setup方法有哪个语句需要依赖被清楚的启动中标志么?
4.因为是不停循环的interpreter在调用这些方法
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-11 03:58

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表