2012-08-08 2 views
0

Espérons que quelqu'un peut aider ici, plus ou moins à la recherche d'une solution aux chemins relatifs ou b) d'un aperçu d'une autre méthode de chargement des actifs.chemins d'actifs de sous-applications multiversioned dans flex 4

Nous avons une application Web autonome qui utilise le SDK 4.1 et recherche dans son dossier d'actifs relatifs pour toutes les images et swfs externes à charger.

sur le serveur, c'est le chemin absolu du répertoire actif:

/ApplicationRoot/versionFldr/controls/assets/* 

l'application utilise des chemins relatifs dans tous les cas de chargement d'un actif .. et ceci est continuellement ajouté à et mis à jour comme nous versions avancées de l'application.

Donc, en substance, l'application recherche:

assets/* 

maintenant avec impatience l'application NOUVEAU, permet de l'appeler "ParentApp" et l'application ci-dessus "ChildApp".

Parent App est dans un répertoire de serveur différent de celui ChildApp

/ParentApp/version/controls/ParentApp.swf 
/ChildApp/version/controls/ChildApp.swf 

maintenant, lorsque les charges ChildApp dans ParentApp, il suppose qu'il est dans le même répertoire que ça a toujours été. Donc, il recherche actifs/* et ne peux pas les trouver car

/ParentApp/version/controls/assets/* != /ChildApp/version/controls/assets/* 

Je dois trouver une solution pour avoir ChildApp regarder dans un chemin absolu pour tous les actifs chargés quand il est un enfant de ParentApp et ont l'air dans les chemins par rapport à lui-même lorsqu'il est autonome. Les avertissements que j'ai sont que les images sont chargées dans divers contrôles, caches, et même mx: champs de texte (texte html avec des étiquettes). J'essaie d'éviter de devoir remplacer globalement tous les liens de chemin de l'application et de devoir créer de nouvelles procédures de codage lorsque de nouveaux actifs sont créés pour l'application. ChildApp est en production et doit rester sur le SDK 4.1. ParentApp est nouveau et a beaucoup plus de flexibilité.

J'ai essayé les options du compilateur -source-path et -library-path dans childApp, mais cela a conduit à la compilation d'erreurs et je n'ai pas pu continuer.

Merci d'avance pour toute idée et aide! -AJ

Répondre

0

Je résoudrais cela en ayant une variable "baseURL" dans l'application enfant. Donnez-lui une valeur par défaut afin que vous puissiez former les URL relatives habituelles que vous utilisez: `var baseURL: String ="/assets/";

Malheureusement, vous devez alors modifier tous les chemins d'actifs dans l'application de l'enfant de sorte que le chemin de l'actif est quelque chose comme: baseURL + assetFileName

Lorsque l'application de l'enfant est chargé dans l'application parent, vous donnez cette variable baseURL un chemin non relatif. Idéalement, vous le faites au début du processus, avant que l'application enfant tente de charger des actifs.

+0

Je l'ai fait pour gérer le chargement des modules et cela fonctionne parfaitement.Je passe une valeur "version" de l'application ParentApp à ChildApp via flashVars et une fois ChildApp initialisé, il l'utilise pour créer un chemin absolu afin de charger les modules correctement. Le problème que j'ai avec l'utilisation de cette variable est le _amount_ d'actifs et d'actifs inconnus auquel il faudra le préfixer. Nous avons un contenu assez dynamique dans ChildApp, et BEAUCOUP d'utilisateurs, même en dehors de notre bureau de développement, ont accès au contenu de modification. Si le contenu inclut un chemin relatif, j'obtiens une erreur d'E/S. – notDefault

+0

** RESOLU **: nous avons créé un lien symbolique sur le serveur dans le dossier assets/de ParentApp pour pointer vers le dossier assets/ChildApp. – notDefault