Итак, у меня есть проект Flex, который загружает модуль с помощью ModuleManager, а не загрузчик модулей. Проблема, с которой я сталкиваюсь, заключается в том, что для загрузки внешнего ресурса (например, видео или изображения) путь для загрузки этого ресурса должен быть относительно SWF-модуля ... не относительно SWF-файла, который загрузил модуль.
Вопрос в том, как я могу загрузить актив в загруженный модуль, используя путь относительно родительского swf, а не модуля swf?
Arg! Так что при копании в классе 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, а не верхнего уровня ... какие-либо предложения?