【问题标题】:AS3 Packaging external files into one stand-alone.swfAS3 将外部文件打包成一个独立的.swf
【发布时间】:2011-09-13 23:54:06
【问题描述】:
我创建了一个非常大型的 Flash 游戏,但显然有一个严重的疏忽 - 希望托管我的游戏的 Flash 门户网站需要它在一个独立的 .swf 中。但是,问题是我从外部加载 everything。我从 .plist 文件加载关卡数据,从 .png 加载图像,从 .wav 加载声音,所有这些都位于 .swf 目录的文件夹中。它们是通过 Loader 和 URLRequest 加载的。
有什么办法可以嵌入这些,以便它可以独立运行?最好是比单独编写嵌入行更简单的方法,因为有 1000 多个文件。
非常感谢!
【问题讨论】:
标签:
flash
actionscript-3
adobe
embed
package
【解决方案1】:
简短回答:不。
长答案:因为您使用 Loaders 和 URLRequests,所以每个资产都需要作为外部请求进行访问。您要求一种简单的方法让它们指向您的 SWF 中的资产,但这是不可能的。但是,如果您稍微改变一下您的工作流程,您可能会找到一种在代码更改方面可以接受的方式,并且从长远来看会使您受益。
如果您使用 Flash Builder、FDT、FlashDevelop 或 IntelliJ 等编辑器,您应该探索 SWC 文件的多种用途。您可以在 Flash IDE 的发布设置中点击“导出为 SWC”复选标记,这将在您每次测试 (Cmd+Enter) fla 文件时创建一个 SWC。您可以在您选择的编辑器中导入该 SWC 文件,并将原始 fla 文件的任何符号引用为 AS3 类。在编译时,flash 编译器会将您的原始资源嵌入到生成的 SWF 中,然后您可以将其分发到您喜欢的任何门户网站。 PNG 和 WAV 是最简单的,对于 .plist,您必须使用 [Embed(...)] 元标记。拥有一个 SWF 的好处还在于您无需预先加载每个单独的资产,并且所有资产的创建都在一个线程中完成。没有更多用于加载资产的事件侦听器意大利面条!
确保为使用 SWC 正确命名符号和链接属性。您可以使用标准包格式轻松找到您的资产,例如将符号命名为 fla.icons.GreyLogo 或 fla.homepage.BackgroundGraphic。如果您有正确的import fla.icons.GreyLogo 方向,您可以通过调用获取徽标
var logo:GreyLogo = new GreyLogo();
Here is an article that goes into this a little more thorougly. 如果我正确理解您的设置,这将是很多工作,但在未来的项目中可能会有优势。
干杯,
EP。