【问题标题】:Embedding text in AS2, like HEREDOC or CDATA在 AS2 中嵌入文本,如 HEREDOC 或 CDATA
【发布时间】:2011-08-10 10:23:23
【问题描述】:

我正在使用 LoadVars() 将文本文件加载到字符串变量中。对于代码的最终版本,我希望能够将该文本作为操作脚本代码的一部分并将其分配给字符串,而不是从外部文件加载它。

类似于 PHP 中的 HEREDOC 语法或 AS3 中的 CDATA (http://dougmccune.com/blog/2007/05/15/multi-line-strings-in-actionscript-3/)

我发现的快速而肮脏的解决方案是将文本放入影片剪辑中的文本对象中,然后获取值,但我不喜欢它

顺便说一句:文本是多行的,可以包括单引号和双引号。

谢谢!

【问题讨论】:

  • 我不明白你为什么不能使用 CDATA...
  • 不知道如何在 AS2 中使用它来做到这一点,你能给我举个例子吗?
  • Aww 对不起...“AS2”是我的大脑拒绝计算的问题的一部分...
  • 让自己毕业到 AS3。在 AS2 中开发任何东西真的毫无意义。带头和学习曲线并学习它
  • 感谢您非常有用的评论。不幸的是,当您必须在一周内交付时,没有时间在 AS3 中重建所有内容(包括不属于您的代码)。

标签: string actionscript-2 multiline cdata heredoc


【解决方案1】:

我认为在 AS2 中,唯一的方法似乎是弄脏它。在 AS3 中,您可以使用 Embed 标签嵌入资源,但据我所知,在 AS2 中没有。

如果它是最终版本并且这意味着您不想再编辑文本,您可以转义字符并使用 \n 作为换行符。

var str = "\'one\' \"two\"\nthree";
trace(str);

输出:

'one' "two"
three

现在只需将文本复制到您喜欢的文本编辑器中,并将每个 ' 和 " 更改为 \' 和 \",换行符更改为 \n。

【讨论】:

  • 这是我想到的第一个解决方案,但与复制/粘贴到文本对象相比,我更喜欢它。顺便说一句:文本很长(50k+),所以这会创建一个非常长的行。每次需要调整某些东西时,都会更难编辑。还是谢谢!
  • 没问题。您说“对于代码的最终版本” - 意味着您不想更改文本。此外,无论您的文本长度如何,这都是“嵌入”文本的唯一解决方案,因为它在脚本中作为变量。就像你想要的那样。
  • 它在我端是最终的,但不是在客户端端。在我交付后,他们可能仍想调整一些东西。因此,我正在寻找一种便于他们在必要时进行修改的解决方案。到目前为止,我想出的最好的方法是将它放入一个文本对象中,这是一个令人讨厌的 hack,但很有效。但我认为可以做一些像heredoc这样的事情,这会好得多。不幸的是,这似乎是不可能的。
  • 我明白了。如果客户处理它,那么您的解决方案是最好的。特别是如果他们不是程序员或脚本编写者。他们可以在文本字段中查看整个文本并对其进行编辑。为什么在 Flash 中嵌入 50k 文本如此重要,尤其是在它发生变化的情况下?没有机会从外部文件加载它?
  • 他们想要一个包含全部内容的单一 swf。顺便说一句:非常感谢您花时间回答:)
【解决方案2】:

Cristian,当您意识到 anemgyenge 的解决方案是单行时,它就会起作用。可以通过简单的操作进行选择和替换。

不要在代码编辑器中编辑文档。在文档编辑器中编辑文档并创建一个将其转换为长字符串的进程(例如通过快速 PHP 脚本运行它)。获取转换后的字符串并将其粘贴到旧字符串上。根据需要重复。

从长期管理的角度来看,这并不理想,特别是如果在您没有交出解析器的情况下交出代码维护,但它可以解决您的一些维护问题。

【讨论】:

  • 嗨,格雷格,谢谢。我使用了我在问题中描述的解决方案(将文本放入影片剪辑中)并且成功了。从现在开始使用 AS3(直到另一个客户端需要 AS2)。干杯!
【解决方案3】:

在每一行使用一对新引号并添加一个空格作为单词分隔符:

var foo = "Example of string " +
"spanning multiple lines " +
"using heredoc syntax."

有一个项目可能有助于为 ActionScript 2 添加部分 E4X 支持:

以及为 Haxe 添加 E4X 支持的项目,该项目可以编译为 JavaScript 目标:

【讨论】:

    猜你喜欢
    • 2020-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多