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