Skip to content

WebgalParser.parse 是否会立即执行各行对应的 gameScript #499

Closed Answered by MakinoharaShoko
linonetwo asked this question in Q&A
Discussion options

You must be logged in to vote

“而在 startGame -> nextSentence 里,直接调用了 WebGAL.events.userInteractNext.emit() 发送事件,这说明 intro 应该是在此之前就执行了”

错误的,intro 只有在游戏里有 intro 脚本且运行到该脚本才执行。这里的事件监听只是为了让 intro 可以在用户点击鼠标的时候提前显示下一行而已。

你会这样猜测是因为你认为事件监听一定在事件发出之前,所以 intro 执行一定在 nextSentence 执行之前。但实际上 nextSentence 函数,也是用户点击鼠标的回调。这个函数被称为“步进”,在用户点击鼠标,点击开始游戏,或者某些脚本执行完后,都有可能执行,并非只会执行一次。所以,在满足用户点击鼠标后可以让 intro 显示下一行这个功能的场景下,该事件回调只需在 intro 指令执行的时候注册即可,没有任何问题。

Replies: 1 comment 1 reply

Comment options

You must be logged in to vote
1 reply
@linonetwo
Comment options

Answer selected by linonetwo
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants