0
branch1:
    text:
        body: "You see two people talking #{branch1.text.person1} #{branch1.text.person2.1} #{branch1.text.person2.2} "
        person1: "Who are you?"
        person2:
            1: "my name is Terra."
            2: "What is your name?"

我正在使用 raw coffeescipt 构建一个选择你自己的冒险游戏。我将不同的故事路径组织成对象,然后将这些对象进一步划分为文本对象。我设置了一个 for 循环,它读取我设置的 text.body 属性,它循环遍历每个字符,并在用户单击鼠标时将其写入 HTML 文档。

问题是,我需要正确地赋予对话属性,并且只有该特定角色的对话显示。就目前而言,您在上面看到的内容将打印为:

"You see two people talking. Who are you? My name is Terra. What is your name?"

当它需要像这样读取时:

"You see two people talking."

Person1: "Who are you?"
Person2: "My name is Terra."
Person2: "What is your name?" 

我想通过在我的循环中设置一些逻辑来做到这一点,这些逻辑可以以某种方式知道它何时读取包含循环的变量。换句话说,当我的循环到达:#{branch1.text.person1} 部分时,计算机会理解“哦!这是一个带有字符串的变量,我最好区别对待”。

但麻烦在于找到一种方法让计算机区分像这样的字符串中的变量。有任何想法吗?

PS:最终的结果是创建一些看起来像这样的东西 在此处输入图像描述

4

1 回答 1

1

问题是,当您使用 CoffeeScript 的字符串插值(使用这些#{}块)时,它们会被编译为+语句并在运行时作为 JavaScript 字符串进行评估,因此您将无法知道构造该值的表达式是什么样的。

如果您希望能够在运行时检测到这些模式,您将需要一个新的数据表示形式来封装它是一个表达式。例如,您可以选择使用常规字符串或函数来表示。这完全取决于您的代码需要做什么。

于 2016-07-09T01:52:19.807 回答