2011-07-15 2 views
1

Je me suis cogné la tête contre un mur pendant presque deux jours et j'espère que quelqu'un pourra me diriger dans la bonne direction.AS3 alternatives aux fichiers * _exclude.xml, chargement dynamique des définitions de classe

Travailler dans un très grande application Flash, précédemment dans AS2/CS3 j'avoir une configuration comme ceci:

root.swf 
-- modules 
---- code_a.swf 
---- code_b.swf 
-- views 
---- view_a.swf 
---- view_b.swf 

En utilisant _exclude.xml fichiers, je pouvais exclure les classes définies dans code_a et code_b de la sortie .swf de view_a et view_b. root.swf serait chargé de charger les modules de code avant view_a ou view_b, en s'assurant que les définitions de classe que view_a et view_b dépendaient existaient.

Le problème

Nous avons récemment migré à l'aide d'Actionscript 3/CS5. *_exclude.xml fichiers n'existent plus. Pour obtenir les mêmes fonctionnalités que ci-dessus, je l'ai essayé ce qui suit:

Ma configuration ressemble maintenant quelque chose comme:

root.swf 
-- modules 
---- class_a.as 
---- class_b.as 
-- views 
---- view_a.swf 
---- view_b.swf 

Utilisez mxmlc pour compiler root.swf, view_a.swf et view_b.swf, faisant passer l'option -externs pour spécifier des classes qui sera chargé en externe (les deux classes en modules). Cela garantit que la classe est exclue du swf compilé.

Utilisation compc pour compiler class_a.as et class_b.as en classes.swf, en utilisant -directory=true pour accéder à library.swf pour le chargement externe.

Toutefois, lorsque j'essaie d'exécuter l'un des deux fichiers de vue qui dépendent de classes.swf, des erreurs d'exécution me signalent qu'une définition de classe n'est pas présente.

actuel Solution

J'ai conçu une solution de contournement que je suis actuellement pas content car il est en arrière à l'approche modulaire que j'utilisais précédemment:

Au lieu de charger les modules de code, Je lie statiquement toutes les définitions de classe requises par les films enfants dans root.swf. Lors de la construction root.swf, j'utilise l'option -link-report de mxmlc pour fournir une liste des classes incluses. Lors de la création de swfs enfants, je peux utiliser -load-externs pour garantir que les définitions de classe qui existent déjà ne seront pas incluses dans la sortie de la compilation.

Y at-il un moyen que tout le monde connaisse pour répliquer la solution AS2/_exclude.xml que j'avais en utilisant AS3/CS5?

+0

Cette ligne de commande est-elle mxmlc, Flash Builder ou Flash Pro? –

+0

Il utilise l'OS Flex SDK – deadbeef

Répondre

0

Je vous recommande de compiler des bibliothèques partagées vers des fichiers SWC.

Il existe d'autres options telles que RSL:

http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf674ba-7fff.html#WS2db454920e96a9e51e63e3d11c0bf69084-7f1e

espoir qui aide.

+0

Je suis à la recherche d'utiliser RSL. Le problème que je rencontre actuellement est que la définition de classe est toujours compilée dans mon conteneur principal swf lors de la publication depuis Flash CS5, même après avoir marqué les bibliothèques comme externes ou RSL .. Je peux utiliser les compilateurs de ligne de commande pour atteindre les résultats Je suis d'accord, mais j'ai besoin de trouver un moyen de supporter ça aussi dans l'EDI Flash. Des idées? – deadbeef

+0

Est-ce Flash Pro ou Flash Builder? Votre fichier SWF doit uniquement compiler l'assembly qui doit être lié. Êtes-vous sûr qu'il n'y a pas de référence à cette définition de classe dans votre conteneur principal? –

+0

Utilisation de Flash Pro. J'ai placé une référence à un swc externe et l'ai placé comme "externe" qui, selon les docs d'Adobe, devrait exclure n'importe quelles définitions de classe (même si référencées dans le récipient) du récipient. Le problème, c'est que ça ne marche pas - c'est vraiment * un peu comme un bug de Flash Pro car ça marche très bien à partir de la ligne de commande. – deadbeef

Questions connexes