Project1

标题: “显示文章”事件指令的@index [打印本页]

作者: kvkv97    时间: 2018-7-3 09:39
标题: “显示文章”事件指令的@index
2,我研究的是文章指令,设定一个事件,事件指令的第一个是一行文字,事件指令的第一个是两行文字,
#下一个事件指令为文章两行以上的情况
if @list[@index+1].code == 401,
@index刚开始不是0吗,对应@list = [#<1>,#<2>,#<nil>]中的#<1>,然后@index=1,不是#<2>吗?为什么
@list[@index+1]中的@index要+1,不是变成2然后#<nil>吗?
谁可以讲解下“显示文章”事件指令的简要过程,我都看瞢了,好多代码!
作者: 灯笼菜刀王    时间: 2018-7-3 10:57
本帖最后由 灯笼菜刀王 于 2018-7-3 11:03 编辑

@index 你可以把它看做"现在执行的命令" 自然 @index+1 就是下一行执行的命令

然后你说的问题, 别忽略它是一个分歧判断句。而且它是套在一个loop do 里头的,

意思就是

下一行是不是文字?  
   是的话塞到框里去
   (@index +1)#命令推进一行
   以上循环
如果不是文字的话,
下一行是不是选择项?
    是的话, 并且可以塞到一个框, 就塞进去
下一行是不是输入数值?
    是的话,并且可以塞到一个框, 就塞进去
命令执行完毕,准备下个命令


这样,如果看到一个塞满4行的对话框的话, 其实它是满足多行命令的结果。

如果第二行不是文字,又没满足可以塞进选择项和输入文字的条件, 就中断这行命令的执行, 继续下个命令, 这个时候就只能看到显示出一个一行文字的对话框了

回到你说的, 当 @index == 2 #=> nil   , 自然就达不到上面的分歧条件,  就等于这次命令执行了,
--------------------
显示第一行文字, @index +1 # => 1
显示第二行文字, @index +1 # => 2
没有第三行文字且下面也没有选择项和输入项, return true.   
-------------------
这个时候@index 是 2, 这里没有命令了, 这个事件到此结束。(显示文章 两行文字就等于两行命令)  

结果就是, 执行事件后,显示一个两行的对话框结束。




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