Je travaille sur une application Flex qui utilise de nombreux objets, par ex. LED, ampoules, jauges créées en Flash. Les objets se composent intérieurement de plusieurs petits MovieClips et ont leur propre logique à l'intérieur. L'une des exigences initiales était que les objets devaient être chargés au moment de l'exécution, ils étaient donc exportés en tant que SWF, et non SWC. Cependant, nous avons rencontré un problème lorsque nous avons essayé de dupliquer le fichier SWF chargé. Il s'est avéré que la classe MovieClip n'a ni constructeur ni méthode de copie qui nous permettraient de cloner un MovieClip existant. De cette façon, nous finirions par charger un objet à chaque fois depuis hdd, ce qui implique beaucoup de frais généraux. Est-il possible qu'un langage comme ActionScript 3 ne dispose pas d'un tel mécanisme? Avons-nous manqué quelque chose? Si non, ai-je raison de dire que la seule solution est d'utiliser Flash Component Kit, de créer des composants personnalisés et de les inclure en tant que SWC au moment de la compilation?Utilisation de fichiers SWF externes dans une application Flex - duplication de MovieClip?
Répondre
Une fois que vous chargez le MovieClip est-il possible d'utiliser getDefinitionByName() comme indiqué ici?
http://livedocs.adobe.com/flex/3/langref/flash/utils/package.html#getDefinitionByName()
Vous avez raison qu'il n'y a pas construit de façon à dupliquer un MovieClip. Il existe cependant des solutions de contournement. La façon la plus simple que je vois est de donner les classes de MovieClips.
Vous ne devez pas faire les classes réelles. Il suffit d'écrire n'importe quel nom dans le champ de classe lors de la mise en place de la liaison sur le plus grand MovieClip qui doit être copié. Donc un nom pour vous LED MovieClip, un autre nom pour l'ampoule, etc
Le benifit est que vous avez maintenant une classe que vous pouvez initier des objets.
Non lorsque vous Grap un des MovieClips vous pouvez dupliquer avec la méthode suivante:
public function DuplicateDisplayObject(dO:DisplayObject):DisplayObject
{
if(dO == null)
return null;
var dOClass:Class = Object(dO).contructor;
return DisplayObject(new dOClass());
}
Cela suppose la cause que vous pouvez réellement obtenir une prise de l'un des MovieClips premier. Et gardez à l'esprit qu'il ne copie pas l'état du MovieClip. Une autre remarque plus importante est que cela ne fonctionne que si vous liez les MovieClips aux classes. Les classes n'ont pas à exister (flash va créer des classes vides pour vous).
D'autres solutions pourraient être:
- Compiler contre les classes sans y compris les (voir la tag « bibliothèque externe chemin » pour le compilateur Flex ) et charger le leur à exécution (de swf).
- Compilant les classes en tant que RSL (Runtime Share Library), le fichier swc sera chargé au moment de l'exécution.
Adobe a plus d'informations sur la façon de le faire, devrait être facile à trouver sur leur site Web.
Une solution plus exotique serait de copier le bytecode d'un objet. Je ne sais pas si cela fonctionnerait avec quelque chose sur la liste d'affichage, correctement non. A propos de la solution utilisant getDefinitionByName(): Si je me souviens bien, vous devez toujours donner les fausses classes movieclips, puisque getQualifiedClassName ne renvoie que la classe MovieClip. Mais je peux me tromper.
Une autre solution:
private function duplicateImg(sourceLoaderInfo:LoaderInfo, target:Image):void
{
var ba:ByteArray = sourceLoaderInfo.bytes;
var dupCliploader:Loader = new Loader();
dupCliploader.contentLoaderInfo.addEventListener(
Event.COMPLETE, bytesLoaded);
dupCliploader.loadBytes(ba);
}
private function bytesLoaded(event:Event):void
{
var mc:MovieClip = event.currentTarget.content as MovieClip;
_img.source = mc;
_img.width = mc.width;
_img.height = mc.height+5;
}
- 1. duplication MovieClip dans FlashLite et AS2
- 2. Chargement de plusieurs fichiers SWF externes dans un fichier swf principal
- 3. Utilisation de composants flex dans une application papervision3d
- 4. Emballage de certains fichiers avec une application Flex/Flash?
- 5. Conditionnement des dépendances de fichiers externes dans Flash
- 6. Créer des plugins dans Flex - charger des fichiers SWF imbriqués
- 7. Mise en cache des fichiers swf dans l'application Flex
- 8. processing.js chargement de fichiers externes
- 9. Quelles sont les restrictions/solutions de contournement nécessaires pour les fichiers SWF externes?
- 10. Où conserverais-je mes fichiers .txt à inclure dans une application Flex?
- 11. Utilisation de FlashVars avec Flex 3
- 12. La compilation de modules flex dans swf avec d'autres fichiers mxml dans ant
- 13. utilisation de méthodes externes entre projets dll?
- 14. Utilisation de WebParts dans une application MVC
- 15. Netbeans et fichiers de configuration externes
- 16. Visionneuse de fichiers SWF gratuite
- 17. Utilisation de JavaHelp avec une application Web
- 18. Flex: Dessiner sur différentes images d'un MovieClip
- 19. Utilisation de nombreux arguments sans code de duplication
- 20. Chargement de fichiers .bundles externes sur l'iPhone
- 21. Quelle est la méthode préférée pour intégrer un graphique SWF dans une application Flex 4?
- 22. Utilisation d'outils de comparaison externes avec Mercurial
- 23. Utilisation de la translittération Google dans Flex
- 24. ActionScript 3 - Ouverture de fichiers externes
- 25. Protection de fichiers dans Adobe AIR (Flex)
- 26. Utilisation de fichiers PNG de bibliothèque d'images Visual Studio dans une application Windows Form
- 27. Chargement de fichiers Javascript externes par chargement
- 28. Flex: créer une application de modèle?
- 29. Application de partage de bureau dans Flex?
- 30. Utilisation de ColorMatrixFilter avec HDividedBox dans Flex
Ceci est la bonne façon de parler. N'oubliez pas de lier vos symboles aux classes en Flash. De cette façon, vous savez quel nom rechercher! ;) –