2017-09-07 28 views
0

J'ai exporté un fichier SWF à partir d'un fichier FLA avec des icônes météo (sous forme de MovieClips) dans la bibliothèque. Les noms de liaison sont "IconX" (où X est le numéro d'icône de 0 à 25).AS3 - Comment charger des éléments MovieClip à partir d'un fichier SWF externe

Je souhaite utiliser ces icônes sur d'autres modèles ... comment charger un élément MofieClip spécifique dans un nouveau modèle?

Le fichier SWF avec les icônes s'appelle TP1023.swf et se trouve au même endroit que les autres modèles.

+4

double possible de [AS3 symbole de charge de la bibliothèque de swf] (https://stackoverflow.com/questions/6188770/as3-load-symbol-from-external-swf-library) –

Répondre

-1

La méthode la plus simple consiste à définir une méthode dans le fichier SWF chargé qui retournera ce que vous demandez. i.e. .:

public function getAsset(classId:String):DisplayObject { 
    var c:Class = Class(getDefinitionByName(classId)); 
    if (!c) { 
     trace("ERROR: class " + classId + " not found."); 
     return null; 
    } 
    var d:DisplayObject = new c() as DisplayObject; 
    if (!d) { 
     trace("ERROR instantiating " + classId); 
     return null; 
    } 
    return d; 
} 

Je suppose qu'il doit être polyvalent, il retourne un DisplayObject. Vous pouvez aussi utiliser d'autres types. Une fois que vous avez chargé le fichier SWF et il est correctement initialisé, vous pouvez récupérer tout élément que vous voulez:

var c:MovieClip = loadedSwf.getAsset("MyAssetId") as MovieClip; 
+0

La qualité de cette réponse est faible. Cela fonctionnera tant que les deux fichiers SWF sont dans le même bac à sable, mais échoueront avec une configuration plus compliquée. Vous devriez lire la méthode ** Loaded.contentLoaderInfo.applicationDomain.getDefinition (...) ** et améliorer la réponse. – Organis

+1

J'ai remarqué que vous avez mis quelques réponses récemment. Ceux que j'ai vus sont de la même qualité: ils contiennent des informations techniques incomplètes ou trompeuses et poussent les gens dans le mauvais sens. Je ** encourage fortement ** à faire de grands efforts pour analyser le problème à fond et lire autant de documentation et de réponses existantes que possible avant de composer votre propre réponse. Les réponses de mauvaise qualité vont à l'encontre du but même de StackOverflow: de telles réponses décourageront et induiront en erreur non seulement OP, mais toutes les personnes qui cherchent une solution au même problème. – Organis

+0

J'ai suggéré une solution simple, qui fonctionne, mais apparemment n'est pas de votre goût. ApplicationDoman.getDefinition() a ses inconvénients, que vous connaissez probablement déjà. Vous êtes libre de suggérer une autre solution et de voter en bas de ma réponse si vous vous sentez, mais vous pouvez épargner les personnes condescendantes que vous ne connaissez pas :) Ciao –