我有一个Flash项目,我正在尝试将其导出为单个SWF。有一个主SWF文件可以加载大约6个其他SWF,主SWF和子SWF都引用其他外部资源(图像,声音等)。我想将所有内容打包为单个.swf文件,因此我不必使用.swf来包装其他资产。
所有编码都在时间轴中完成,但资产尚未导入Flash Authoring环境,我现在没有时间这样做(到处都有太多的引用)。我希望有一个我缺少的选项允许这种打包导出,但我还没有找到类似的东西。
我无法访问Flex或mxmlc(由于AS是基于时间轴的,因此它们不一定能帮助我)。有什么想法吗?
谢谢!
PS ...如果没有办法完全按照我所说的做,我可以处理所有资产都在“资产”文件夹或类似的东西,所以我只是在附近main.swf和资产文件夹。这里的问题是所有对资产的引用都假设它们与main.swf文件位于同一个文件夹中,所以假设所有内容都是本地的...有没有办法在Flash中更改所有外部引用的范围(例如,代码中的所有本地引用实际上是在/ assets中搜索的)?
答案 0 :(得分:2)
你可能能够使用swfmill / mtasc将swfs反编译为XML,并使用花哨的XSLT重新组合它们并使用swfmill / mtasc重新编译。
如果这不起作用,如果你使用MovieClip.loadMovie或MovieClipLoader.loadMovie,你可以重载他们的方法并拦截网址:
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");
如果网址具有资源类型前缀,例如file://
,则需要进行一些额外的字符串解析答案 1 :(得分:0)
嵌入swf时可以添加一个基本参数,就像对齐,缩放等一样。如果设置了base,所有相对url都将以你定义的任何路径为前缀(好吧,几乎所有;视频和文件引用对象在这里是例外)。 除此之外,我会选择nikaji的解决方案。
答案 2 :(得分:-1)