0

我有一个 Flash 项目,我试图将其导出为单个 SWF。有一个主 SWF 文件可以加载大约 6 个其他 SWF,主 SWF 和子 SWF 都引用其他外部资源(图像、声音等)。我想将所有内容打包为单个 .swf 文件,这样我就不必将其他资产与 .swf 一起打包。

所有的编码都在时间轴中完成,但资产尚未导入 Flash 创作环境,我现在没有时间这样做(到处都有太多对它们的引用)。我希望我只是缺少一个允许这种打包导出的选项,但我还没有找到类似的东西。

我无法访问 Flex 或 mxmlc(由于 AS 是基于时间线的,它们不一定会帮助我)。有什么想法吗?

谢谢!

PS ...如果没有办法完全按照我所说的那样做,我可以处理将所有资产放在“资产”文件夹或类似的东西中,所以我只是带着 main.swf 和资产文件夹。这里的问题是对资产的所有引用都假定它们与 main.swf 文件位于同一文件夹中,因此一切都假定为本地...有没有办法更改 Flash 中所有外部引用的范围(例如,代码中的所有本地引用实际上都在 /assets 中搜索)?

4

3 回答 3

2

也许可以使用 swfmill/mtasc 将您的 swf 反编译为 XML,并使用精美的 XSLT 重新组合它们并使用 swfmill/mtasc 重新编译。

如果这不起作用并且如果您使用的是 MovieClip.loadMovie 或 MovieClipLoader.loadMovie,您可以重载它们的方法并拦截 url:

var realLoadMovie:Function = MovieClip.prototype.loadMovie;

MovieClip.prototype.loadMovie = function(url:String, method:String) {
    return realLoadMovie("assets/" + url, method);
}

var test:MovieClip = createEmptyMovieClip("testclip", getNextHighestDepth());
test.loadMovie("test.swf");

如果 url 具有资源类型前缀(例如 file://),则需要进行一些额外的字符串解析

于 2009-09-12T01:41:52.163 回答
0

当您嵌入 swf 时,您可以添加一个基本参数,就像对齐、缩放等一样。如果设置了 base,所有相对 url 将以您定义的任何路径作为前缀(嗯,几乎所有;视频和文件引用对象是这里例外)。除此之外,我会选择 nikaji 的解决方案。

于 2010-04-17T23:29:23.710 回答
-1

嗨贾斯汀,

听起来您需要考虑使用共享库。查看:

http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_14767

于 2008-10-13T16:15:52.287 回答