【问题标题】:Lingo Code "[cc]" is coming up as a faultLingo Code "[cc]" 出现故障
【发布时间】:2015-03-10 12:57:30
【问题描述】:

该游戏是高级术语书中的单词搜索游戏,术语代码正在使用 [cc],这将作为代码错误出现。有什么问题或这种使用 [cc] 已过时?如果是这样,如何纠正?

 on getPropertyDescriptionList me
   list = [:]

   -- the text member with the words in it
   addProp list, #pWordSource,[cc]
    [#comment: "Word Source",[cc]
    #format: #text,[cc]
    #default: VOID]

 addProp list, #pEndGameFrame,[cc]
    [#comment: "End Game Frame",[cc]
    #format: #marker,[cc]
    #default: #next]

    return list
 end

【问题讨论】:

    标签: adobe-director lingo


    【解决方案1】:

    我猜这是来自here 的代码,对吧?

    这似乎是 Lingo 语法的旧版本。 [cc] 显然代表“延续字符”。它基本上使编译器忽略它之后的换行符,因此它将从[#comment:#default: VOID] 的所有内容都视为一长行,这是语法上正确的编写方式。

    如果我没记错的话,曾几何时,制作 Lingo 的人做了一个更疯狂的决定,并让延续字符看起来像这样:¬ 当然,这并没有在很多地方打印,所以有些像你的书这样的文本使用了 [cc] 这样的东西来代替它。

    在 Lingo 的现代版本中,延续字符是 \,就像在 C 中一样。

    【讨论】:

    • 谢谢。这与我从 Adob​​e 论坛得到的答案完全相同。代码仍然无法正常工作....我将其归咎于“旧”行话,我刚从亚马逊买了这本书——第二手。我想知道有没有更新的版本?嗯。但是,再次感谢 Mints97。
    • @londonbird:它现在给你什么错误?无论如何,如果您真的想使用本书中的示例,您可以尝试寻找旧的 Director 版本(我会为 Director 8 或更早版本拍摄); IIRC,Lingo 在某些时候经历了重大变化。但是,如果您决定支持旧 Lingo,请注意 - 您最终可能会制作出不适用于现代版本 Shockwave 的东西(它的向后兼容性很糟糕)
    • 更新:我通过将成员名称替换为演员编号来使代码正常工作。在那之后一切都奏效了。欢呼吧。
    • 你好。我想我会坚持最新的Director 12。我联系了作者,他说他不再打算用Director写书了,他不再使用它,更喜欢使用AS3和AIR。
    • @londonbird:好吧,如果你真的想学习制作 Shockwave 的东西,总会有其他书籍和互联网教程;)无论如何,如果我的回答对你有帮助,你可以考虑接受 供尝试此特定 Director 教程的人将来参考 =)
    【解决方案2】:

    我在早期的 Director 中编程,但从那以后的许多年里一直在学习其他语言。我理解这段代码。该函数尝试生成字典字典。在准 JSON 中:

    {
      'pWordSource': { ... } ,
      'pEndGameFrame': { ... }
    }
    

    它正在创建一个字符串散列,然后将“pWordSource”存储为指向它自己的 3 项散列的新键。然后系统使用新的密钥“pEndGameFrame”重复该过程,提供另一个 3 项哈希。所以只是为了扩展省略号......从上面的代码示例:

    {
    
      'pWordSource': { 'comment': 'Word Source', 'format': 'text', 'default': null } ,
    
      'pEndGameFrame': { 'End Game Frame': 'Word Source', 'format': 'marker', 'default': 'next' }
    
    }
    

    所以我希望能解释哈希字符。这是行话的说法“这不仅仅是一个字符串,它是一个特殊的特定于导演的系统,我们称之为symbol。它可以用更传统的编程术语描述为一个常量。 lingo 编译器会将你的#string1 替换为一个整数,并且它总是与#string1 关联的整数。因为哈希键实际上是整数而不是字符串,我们可以将 json 模型更改为看起来更像这样:

    {
    
      0: { 2: 'Word Source', 3: 'text', 4: null } ,
    
      1: { 2:'End Game Frame', 3: 'marker', 4: 'next' }
    
    }
    

    地点:

    0 -> pWordSource
    1 -> pEndGameFrame
    2 -> comment
    3 -> format
    4 -> default
    

    因此,为了模仿 2016 年术语中的相同构造行为,我们使用较新的 object oriented dot syntax for calling addProp on property lists

    on getPropertyDescriptionList me
      list = [:]
    
      -- the text member with the words in it
    
      list.addProp(#pWordSource,[       \
              #comment: "Word Source", \
              #format: #text,          \
              #default: void           \
          ])
    
      list.addProp(#pEndGameFrame,[        \
              #comment: "End Game Frame", \
              #format: #marker,           \
              #default: #next             \
          ])
    
      return list
    end
    

    同样,相同的参考资料显示了如何使用方括号“访问”属性,然后通过设置它们的第一个值来初始化它们的示例。

    on getPropertyDescriptionList me
      list = [:]
    
      -- the text member with the words in it
    
      list[#pWordSource] = [       \
          #comment: "Word Source", \
          #format: #text,          \
          #default: void           \
      ]
    
      list[#pEndGameFrame] = [        \
          #comment: "End Game Frame", \
          #format: #marker,           \
          #default: #next             \
      ]
    
      return list
    end
    

    如果您仍然对反斜杠的作用感到困惑,还有其他方法可以使代码更加垂直。

    on getPropertyDescriptionList me
      list = [:]
    
      -- the text member with the words in it
    
      p = [:]
      p[#comment] = "Word Source"
      p[#format] = #text
      p[#default] = void
    
      list[#pWordSource] = p
    
      p = [:] -- allocate new dict to avoid pointer bug
      p[#comment] = "End Game Frame"
      p[#format] = #marker
      p[#default] = #next
    
      list[#pEndGameFrame] = p
    
      return list
    end
    

    上面的屏幕截图显示它在 OS X Yosemite 上的 Director 12.0 中运行。

    【讨论】:

      猜你喜欢
      • 2016-07-19
      • 1970-01-01
      • 1970-01-01
      • 2015-05-23
      • 2021-04-07
      • 1970-01-01
      • 2012-12-08
      • 2018-04-19
      • 1970-01-01
      相关资源
      最近更新 更多