2009-11-17 3 views
4

Je travaille sur une application très graphique qui utilise le contenu de plusieurs FLA différentes. Je suis un codeur, cependant, je veux faire tout mon codage dans Flash Builder, mais je veux permettre à mon concepteur d'utiliser encore quelques actions de chronologie telles que stop(); et même quelques gestionnaires de boutons simples pour changer la vue. J'ai essayé de trouver le meilleur flux de travail pour ce type d'installation; J'ai essayé d'utiliser Embed, mais cela supprime le code temporel. J'ai essayé Loader mais cela ne m'a pas permis de terminer le code ni de vérifier la compilation. J'utilise actuellement des SWC avec des classes personnalisées pour sous-classer les éléments à l'intérieur. le SWC, qui semble être le meilleur mélange jusqu'ici - vous obtenez le code d'achèvement et les scripts de chronologie fonctionnent toujours. Le problème que j'ai est que j'ai une vue plutôt complexe dans Flash, et je voudrais assigner de vraies classes à certains des autres éléments de la bibliothèque, mais ils ne maintiennent pas leur association de classe lorsqu'ils sont exportés dans le SWC. Par exemple, supposons que j'ai un FLA avec un symbole dans la bibliothèque appelée View. Je lui donne une classe de liaison de "com.company.view.design.ViewDesign". A l'intérieur de cette vue sont 3 cadres, avec un symbole différent sur chacun, appelé 'content1', 'content2' et 'content3'. Je donne ces classes de liaison similaires "com.company.view.design.Content1" etc. Dans mon code de base, j'ai une classe appelée com.company.view.View qui étend com.company.view.design.ViewDesign. Cela me donne un accès complet à tout ce qui se trouve à l'intérieur du symbole View, ce qui est génial, et tous les scripts de scénario de View fonctionnent toujours. Le problème est le suivant: ces 3 symboles de contenu sont vraiment complexes et seraient les principaux candidats à lier à leurs propres classes externes (com.company.view.Content1 etc.) mais si j'essaye de le faire dans Flash, quand j'instancie com.company.view.View, j'obtiens l'erreur "La coercition de type a échoué: impossible de convertir flash.display :: MovieClip @ 20bec5e1 en com.company.view.Content1". Est-ce qu'il y a une solution à cela, ou dois-je juste traiter mon SWC comme une bibliothèque et construire la vue par programmation, en utilisant le même modèle d'héritage pour les panneaux de contenu que j'utilise pour la vue? J'aimerais que mon concepteur soit capable de gérer autant de disposition que possible, mais avec des vues de plus en plus complexes, je ne veux pas avoir à mettre toutes les fonctionnalités pour une seule vue dans une classe monolithique (com.company .view.View).ActionScript 3 Flux de travail utilisant des SWC avec des classes externes liées

+1

Utilisez-vous Flash Builder (comme dans la nouvelle version de Flex Builder) ou Adobe Flash® – greggreg

+0

? J'ai les mêmes problèmes et je ressens votre douleur. ceci sera en partie corrigé dans les nouvelles versions de Flash Builder (nouveau nom, moins déroutant) et de création Flash (cs5 cette fois). mais en attendant, c'est très compliqué. – grapefrukt

+0

J'utilise Flash Builder 4 Beta 2. @grapefrukt: juste curieux, mais comment cela sera-t-il résolu? Il me semble presque plus d'un problème de langue/format? –

Répondre

1

Comme vous l'avez dit, SWC est la voie à suivre. Je pense que je suis tombé sur une situation assez similaire, et je vous recommande check this question. Here est un projet factice sur cette approche.

En outre, si cela peut accélérer le temps de développement, j'ai créé ce tiny extension qui déclare les instances de scène, les initialise et les place dans votre presse-papiers pour que vous puissiez l'ajouter à votre classe liée. Tout ce que vous devez faire au départ est de configurer un schéma de nommage dans le panneau de commande, puis tout ce dont vous aurez besoin est le bouton Générer.

J'espère que votre concepteur a une configuration SVN. Les concepteurs détestent SVN! Vous pouvez les tromper avec quelque chose qui semble mignon sur un mac comme Versions ou Cornerstone.

Goodluck!

+0

George, merci pour le lien, j'ai effectivement lu votre post avant et j'ai eu le même problème de 'shared classpath' que vous avez fait, donc c'était une information incroyablement utile! Malheureusement, mon problème est plus complexe dans la mesure où je ne peux pas créer de lien dans des classes personnalisées imbriquées. Je peux lier un symbole dans la bibliothèque à une classe personnalisée, exporter un SWC et obtenir la fonctionnalité. Mais, si ce symbole comporte un autre symbole, disons un bouton personnalisé avec une classe liée de la même manière, le bouton ne sera pas tapé en ActionScript. Je pense que la solution consistera à simplifier les fichiers FLA afin que rien ne soit imbriqué, et assembler ma mise en page dans un script. –

+0

Oh, j'ai oublié d'ajouter, je fais toujours utiliser mes concepteurs par SVN :) –

+0

C'est un peu un poulet et un oeuf. Si vous liez des classes dans Flash et compilez les swcs, vous rencontrez l'erreur Type Coercion. D'autre part, si vous utilisez les classes as3 générées par défaut par flash avec le swc, et que vous sous-classez ceci: vous obtenez nothingness.the swc contient des classes précompilées qui agissent bizarrement lors du sous-classement. Comme vous l'avez dit, le fractionnement pourrait être la solution. Avoir un swc différent pour chaque composant peut-être, et refaire certaines des animations de menu avec du code. Adobe semble considérer l'intégration avec le flash quand il s'agit de la structure flexible principalement :(qu'en est-il des bases? –

0

vos classes com.company.view.Content1 étendent-elles MovieClip? Sinon, ils ne peuvent pas être ajoutés à la scène et Flash va lancer cette erreur.

0

Lors du chargement des plans au moment de l'exécution, toutes les informations de classe sont perdues. C'est la racine de votre problème. Dans de tels cas, j'ai utilisé avec succès le technique suivant. Cette technique permet de charger le film et de reconstituer les informations de classe. Grant Skinner l'a détaillé il y a quelque temps et cela vaut aussi pour les applications purement flash, même si l'article parle de Flex.

Questions connexes