2010-01-26 4 views
3

Je travaille sur une grande application qui est divisée en plusieurs swfs indépendants. Il y a un swf maître qui charge un shell de navigation et la logique de base, et un système de chargement de module qui charge les swfs enfants dans la zone d'affichage principale. Tout fonctionne bien, et maintenant je suis sur la construction des modules, et je commence à avoir l'impression que mes méthodes ne sont pas aussi efficaces qu'elles devraient l'être.Comment optimiser les applications flash modulaires (temps de chargement et flexibilité)?

Le module swfs (et les flas correspondants) se trouvent dans un sous-répertoire "modules" du dossier src du projet principal. Ces modules partagent un grand nombre de classes. En fait, la plupart d'entre eux ne définissent pas de nouvelles classes spécifiques à ce module. Les classes partagées ont une structure compliquée d'utilisation de l'héritage et de l'interface et se trouvent dans un sous-répertoire view/structure du dossier src principal.

Actuellement, afin d'utiliser les classes partagées à partir de la vue/structure dans mon module swfs, j'ajoute le dossier src du projet principal au chemin source dans chacun des modules flas. En plus d'être un peu fastidieux à faire à chaque fois, il 1.) Redundantly compile les classes partagées dans chaque module en augmentant la taille des fichiers, 2.) Nécessite l'ajout de nouveaux chemins source aux modules pour chaque développeur qui veut travailler sur/tester l'application car ce sont des valeurs absolues et différentes sur le système de fichiers de chaque OS, et 3.) Ne permet pas de construire des modules indépendamment sans accéder au dossier principal du projet src

J'ai fait un peu de recherche sur les RSL dans flash, mais je ne pouvais pas vraiment voir comment je les intégrerais dans ce schéma.

Des idées? Merci beaucoup pour la lecture.

-Dane

+0

Cela semble complexe. Je me demandais, si vous avez vos classes de module principal (sorte de module abstrait tout le reste hérite de ou implémente des méthodes), cela vous conviendrait-il de compiler cela comme un swc et de l'utiliser comme ça? chaque fois que vous compilez, seul le nouveau code doit être compilé, car swc est déjà compilé. 1). 2.) chaque développeur met à jour son swc, dans le répertoire libs peut-être, chemin relatif. 3.) si elles sont obligées de mettre en œuvre et d'interfacer, ou d'étendre une classe qui a une implémentation minimale pour ce qui est nécessaire dans les méthodes protégées, ça devrait aller. –

+0

Un fichier SWF essaie toujours d'être aussi autonome que possible.Même sans dépendances compliquées, chacun dans un ensemble pour un projet aura tendance à gonfler. Les RSL sont la réponse à cela, voir l'explication de Theo ci-dessous. – Ipsquiggle

Répondre

2

Dans ce cas, je recommande fortement d'utiliser bibliothèques partagées. Je ne l'ai jamais fait depuis Flash IDE directement depuis que je compile toujours via Flex, mais je suppose que la logique de l'EDI devrait être presque la même, mais il se peut que vous deviez modifier un peu la solution suivante pendant que je l'écris du haut de mon esprit sans jamais l'avoir testé ...

Inclure toutes les classes principales à partager dans le shell principal en les référençant d'une manière ou d'une autre dans son code (le compilateur inclut les classes de manière paresseuse et les classes non référencées ne sera pas inclus et exporté).

Pour assurer la cohérence des classes partagées, publiez un SWC des classes utilisées (cochez la case 'Export SWC' dans les paramètres de publication). Vous pouvez toujours vérifier le contenu de SWC simplement en le décompressant.

Dans les modules chargés, supprimez les chemins de classe du "Chemin source"/"Chemin de la bibliothèque". Au lieu de cela, ajoutez le fichier SWC fraîchement créé à la liste "External Library Path". Lorsque vous exportez maintenant vos modules, les classes trouvées dans le fichier SWC ne seront pas incluses dans les fichiers SWF.

Remarque: Vous pouvez probablement obtenir des erreurs d'exécution («définition non trouvée ...») lorsque vous exportez/exécutez les modules en externe à partir du fichier SWF principal. Cela est logique puisque les définitions que vous avez supprimées sont censées provenir du fichier SWF principal.

+0

+1 .. Il me semble que le scénario décrit par Dane est exactement la situation où les RSL ont de la valeur. – Ipsquiggle

+0

Merci, cela ressemble à la réponse que je cherche. – Dane

Questions connexes