Project1

标题: 关于独立开关顺序的问题 [打印本页]

作者: zxcvgfds007    时间: 2013-9-15 13:40
标题: 关于独立开关顺序的问题


前两天问了个关于“怎样让几个宝箱在3分钟后消失 ”的问题,在高手的帮助下已解决,

不过,有个地方我不太懂,就是在上图中圈出来的两个独立开关,

在“并行处理”的情况下,可以正常运行,开始计时,不过如果把两个开关颠倒一下,第一个变成ON,第二个变成OFF,

进了游戏,就是不显示计时,到底是怎么回事,我本以为的颠倒一下是不会影响的

@76213585  
作者: 幼雪の慯    时间: 2013-9-15 14:24
UI>因為開關最開始狀態是OFF、所以判定不到ON第一個分支就跳過了
作者: 铃仙·优昙华院·因幡    时间: 2013-9-15 14:47
本帖最后由 铃仙·优昙华院·因幡 于 2013-9-15 14:48 编辑

这个要说的话, 要说道事件的执行问题了.

这个是事件记得你之前是 "并行事件" , 所以在地图中, 这个事件每次都会被执行. 那么, 让咱先来编号一下:

语句 1:   条件分歧: 独立开关 B == OFF
语句 2:       计时器操作: 开始( 0 分 20 秒 )
语句 3:       独立开关B = ON
语句 4:   分歧结束.


在解释之前你要先知道, 所有的开关和独立开始在初始的情况下, 也就是说在你没有去动它的情况下, 都是关闭的, 也就是都是状态 OFF.

[line]5[/line]

那么, 我们先首次执行这个事件:

"语句 1:  条件分歧: 独立开关 B == OFF "

VX 在执行这个语句的时候, 会先判断 独立开关B 是不是 OFF, 也就是, 是不是关闭的状态. 显而易见的, 第一次执行的话, 必然是 OFF. (除非你在其他地方修改了这个开关). 所以, 到这里的时候, VX 会知道现在的 独立开关 B 是处于关闭这个状态的, 所以会执行在 语句1 和 语句 4 之间的语句.

"语句 2:       计时器操作: 开始( 0 分 20 秒 )"

确定了 VX 会执行接下里的语句之后, VX 就会把目光转向 语句2,  这是打开一个计时器.

" 语句3:       独立开关B = ON"

再接下来, 就是手动把 独立开关 B 打开, 变成了 ON 状态.

" 语句4:   分歧结束."

最后结束这个条件分歧.

[line]5[/line]

由于是并行处理的事件, 那么这四个语句必然会在 VX 的每次刷新中被执行到. 那么, 这是第二次执行的情况:


"语句 1:  条件分歧: 独立开关 B == OFF "

依旧是条件分歧. 判断的条件和第一次执行是一样的(同一个事件嘛). 不过这里要特别注意的是, 独立开关 B 在第一次执行的时候, 被你打开了, 变成了 ON 状态. 也就是说, 在第二次 VX 执行到这里的时候, 这个条件分歧是不满足要求的. 条件是需要 独立开关 B 为关闭的情况, 但是现在 独立开关却是打开的. 条件分歧在不满足条件的情况下, 会直接跳向和它相对应的那个 分歧结束, 也就是这里说的 语句4;

"语句 2:       计时器操作: 开始( 0 分 20 秒 )"
"语句 3:       独立开关B = ON"

由于之前的条件分歧是不满足所给定条件的, 所以这两个语句都不会被执行, 直接跳过. 这样就保证了, 计时器只会初始化一次.

" 语句4:   分歧结束."

最后跳跃到这里, 直接漏过 语句2 和 语句3.

[line]5[/line]

之所以要这么写, 是为了保证 计时器 在需要的时候只会被打开一次.

因为计时器在每次打开的时候, 都会重新开始计时. 如果你每次都打开一次这个计时器, 导致的结果就是, 计时器的时间会一直的固定在你设定的时间内, 也就是这里的 20秒. 计时器会一动不动的卡在20秒这里, 不过这明显是和想象中不一样的.

[line]5[/line]

综上所述, 这么的理由是, 要确保计时器只会被打开一次, 并且能正确的计时.
作者: zxcvgfds007    时间: 2013-9-15 14:55
幼雪の慯 发表于 2013-9-15 14:24
UI>因為開關最開始狀態是OFF、所以判定不到ON第一個分支就跳過了

{:2_264:}我没太懂你的意思

如果按你这么说,第一次判定,是B==OFF,直接跳过了,那就不会开始计时吧?

而石事实是,最开始状态是OFF的时候,可以成功的计时啊

我是把第一个变成ON才失败了的




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