Пути к многопользовательским субприложениям в 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 переменная не относительный путь. В идеале вы делаете это на ранних этапах процесса, до того, как дочернее приложение пытается загрузить какие-либо активы.

Другие вопросы по тегам