在没有 Flash 的情况下更改 SWF 文本的方法?

Posted

技术标签:

【中文标题】在没有 Flash 的情况下更改 SWF 文本的方法?【英文标题】:Some way to change text of SWF without having Flash? 【发布时间】:2013-12-21 20:22:51 【问题描述】:

我有一个带有一些文本的 FLA,但发送 SWF 的人没有 Flash,也对 Flash 一无所知。

是否有某种方法可以构建 FLA,以便通过以某种方式修改 SWF 来更改文本?由于公司政策,SWF 无法读取外部文件。

我们尝试在 FLA 中编程,让它在另一台服务器中读取 XML,但这是不允许的。我也无法将 SWF 与另一个文件(即 xml 文件)一起发送。

谢谢。

【问题讨论】:

【参考方案1】:

使用FLASM 或SWFMILL,它们是用于 swf 文件的免费命令行汇编器/反汇编器。使用其中任何一个来拆卸您的 swf。您可以在任何文本编辑器中打开结果文件,查找并替换您的文本,然后再次将其组合为 swf。希望对您有所帮助。

【讨论】:

【参考方案2】:

尝试在没有 Flash 的情况下修改 FLA 文件是一种奇怪的逻辑。 FLA 文件是二进制文件,您需要编辑器才能阅读它,而且我很确定 Adob​​e 不允许合法地使用 3rd 方编辑器。

但是,是的,有一个动态的 TextField 很好,您可以在其中发送参数和更改数据。请注意 - 您需要发送数据。意味着它必须来自外部。

有哪些选择?嗯,实际上,很少:

从外部文件加载或从服务器端脚本获取。你说不允许,我们省略这个方法。 读取 FlashVar。如果您在 html 页面中发布它,您实际上可以通过 FlashVars 提供一些数据。不仅是 1 个变量,而且是任意数量的变量。小字符串也可以,但如果你打算传递比句子更大的文本……不要这样做。 作为一个有趣的技巧,您可以尝试使用所需的文本命名文件并读取 SWF 的 URL,从而显示其名称并将其用作文本数据。但不要这样做 :)^ 如果您想尝试,可以使用stage.loaderInfo.url 访问 URL,只需确保定义了一个阶段 - 在文档类中调用或在您调用的显示对象添加到阶段之后。 使用 ExternalInterface 与 javascript 等进行通信并从 JavaScript 获取变量。实际上还不错,因为您的文本将整齐地存储在 .js 文件中,您可以在运行时对其进行修改。这当然是一个单独的文件,您需要将 SWF 嵌入到 HTML 中,但这是您可以选择的选项之一。

除此之外,您还可以有一个外部文件来保存数据并将其嵌入到 SWF 中。在此处查看更多关于嵌入的信息:http://flashgamedojo.com/wiki/index.php?title=Embedding_XML_in_AS3。它是关于嵌入 XML 数据的,但您可以将该技术用于任何数据,甚至是二进制数据。 嵌入数据是一件好事,但是每次对文件进行更改时都需要重新编译,因为它不是动态加载文件,而是在编译时将其嵌入到 SWF 本身中。

希望有帮助!

【讨论】:

没问题!如果我回答了您的问题,请将帖子标记为“已回答”,以便其他人可以找到类似问题的答案 我在该评论中添加了其他内容,但显然它没有正确加载。我正在与报纸网站的网络管理员交谈,他们告诉我他们使用 Google DFP(DoubleClick for Publishers)。 Google DFP 是否可能不允许 SWF 连接到另一台服务器中的 XML 文件?【参考方案3】:

JPEXS Decompiler 可以很容易地更改 SWF 中的文本。截至 2021 年,它仍在积极开发中。

【讨论】:

以上是关于在没有 Flash 的情况下更改 SWF 文本的方法?的主要内容,如果未能解决你的问题,请参考以下文章

从动态文本 AS2 Flash 链接到 swf

可以在没有 Adob​​e Flash Professional 的情况下使用 ActionScript 3?

在 Flash Builder 4.6 项目中嵌入带有 TLF 文本的 swf

Flex 3和Flash播放器缓存

保存简单Flash游戏的级别?

Flash 计时器中的文本动画