所以,我有一个使用 ModuleManager 加载模块的 Flex 项目,而不是模块加载器。我遇到的问题是要加载外部资产(如视频或图像),加载该资产的路径必须相对于模块 swf...而不是相对于加载模块的 swf。
问题是 - 如何使用相对于父 swf 而不是模块 swf 的路径将资产加载到加载的模块中?
精氨酸!因此,在挖掘 SWFLoader 类时,我在私有函数 loadContent 中发现了这段代码:
// make relative paths relative to the SWF loading it, not the top-level SWF
if (!(url.indexOf(":") > -1 || url.indexOf("/") == 0 || url.indexOf("\\") == 0))
{
var rootURL:String;
if (SystemManagerGlobals.bootstrapLoaderInfoURL != null && SystemManagerGlobals.bootstrapLoaderInfoURL != "")
rootURL = SystemManagerGlobals.bootstrapLoaderInfoURL;
else if (root)
rootURL = LoaderUtil.normalizeURL(root.loaderInfo);
else if (systemManager)
rootURL = LoaderUtil.normalizeURL(DisplayObject(systemManager).loaderInfo);
if (rootURL)
{
var lastIndex:int = Math.max(rootURL.lastIndexOf("\\"), rootURL.lastIndexOf("/"));
if (lastIndex != -1)
url = rootURL.substr(0, lastIndex + 1) + url;
}
}
}
显然,Adobe 已经付出了额外的努力来使图像加载到实际的 swf 而不是顶级 swf 中(没有其他标志可供选择......),所以我想我应该提交一个功能请求以获得某种“相对于 swf 加载”标志,直接编辑 SWFLoader,或者我应该拥有与单个 swf 相关的所有内容,而不是顶级...有什么建议吗?