Пути к многопользовательским субприложениям в flex 4
Надеемся, что кто-то может помочь здесь, более или менее ища а) решение относительных путей или б) понимание другого метода загрузки активов.
У нас есть отдельное веб-приложение, которое использует SDK 4.1 и ищет в папке относительных ресурсов все загружаемые изображения и внешние файлы SWF.
на сервере это абсолютный путь к каталогу ресурсов:
/ApplicationRoot/versionFldr/controls/assets/*
приложение использует относительные пути во всех случаях загрузки актива... и это постоянно добавляется и обновляется по мере продвижения версий приложения.
Итак, по сути, приложение ищет:
assets/*
Теперь перейдем к НОВОМУ приложению, давайте назовем его "ParentApp", а вышеприведенное приложение "ChildApp".
Родительское приложение находится в другом каталоге сервера, чем ChildApp
/ParentApp/version/controls/ParentApp.swf
/ChildApp/version/controls/ChildApp.swf
теперь, когда ChildApp загружается в ParentApp, он предполагает, что он находится в том же каталоге, в котором он всегда находился. Итак, он ищет assets/* и не может найти их, потому что
/ParentApp/version/controls/assets/* != /ChildApp/version/controls/assets/*
Мне нужно найти решение, чтобы ChildApp просматривал абсолютный путь для ВСЕХ загруженных ресурсов, когда он является дочерним по отношению к ParentApp, и чтобы он смотрел пути относительно себя, когда он автономен.
Я имею в виду, что изображения загружаются в различные элементы управления, кеши и даже в поля mx:Text (html текст с тегами). Я пытаюсь избежать необходимости глобально заменять все ссылки на пути в приложении и создавать новые процедуры кодирования при создании новых ресурсов для приложения. ChildApp находится в производстве и должен оставаться на 4.1 SDK.
ParentApp является новым и обладает гораздо большей гибкостью.
Я пробовал опции компилятора -source-path и -library-path в childApp, но это привело к ошибкам компиляции, и я не смог продолжить.
Заранее благодарю за понимание и помощь! -Л
1 ответ
Я бы решил эту проблему с помощью переменной baseURL в дочернем приложении. Задайте ему значение по умолчанию, чтобы вы могли сформировать обычные относительные URL-адреса, которые вы используете: `var baseURL:String = "/assets/";
К сожалению, вам придется изменить каждый путь к активу в дочернем приложении, чтобы путь к активам был примерно таким: baseURL + assetFileName
Когда дочернее приложение загружается в родительское приложение, вы даете это baseURL
переменная не относительный путь. В идеале вы делаете это на ранних этапах процесса, до того, как дочернее приложение пытается загрузить какие-либо активы.