区分何时读取带有字符串的变量

时间:2016-07-09 01:44:59

标签: javascript string coffeescript adventure

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?"

我使用原始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 部分,电脑会理解"哦!这是一个带有字符串的变量,我更好地对待它#34;

但问题是找到一种方法让计算机区分出像这样的字符串中的变量。有什么想法吗?

P.S。:最终的结果是创造一些看起来像这样的东西 enter image description here

1 个答案:

答案 0 :(得分:1)

问题在于,当您使用CoffeeScript的字符串插值(使用那些app:met_floatingLabel="highlight"块)时,这些会被编译为#{}语句并在运行时作为JavaScript字符串进行评估,因此您不会能够知道构造该值的表达式是什么样的。

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