AS3 Instancier la Classe De SWF Externe
Je discutais avec mon copain à ce sujet, il est convaincu que vous pouvez faire cela et dit qu'il l'a fait, mais je ne peux pas obtenir que cela fonctionne.
Je me demande si c'est encore possible. J'ai essayé de taper un var en tant que Classe qui est à l'intérieur de l'extérieur téléchargé SWF et ensuite faire une instance, mais ne peut le faire.
du code
private static function onCompleteHandler(e:Event)
{
dashboardObject = e.target.content;
//registerClassAlias("Dashboard", ); doesnt work
var dash:Class = getDefinitionByName("Dashboard") as Class;
var myDash = new dash();
trace(myDash.show);
}
Erreur
ReferenceError: Error #1065: Variable Dashboard is not defined.
at global/flash.utils::getDefinitionByName()
at System$/onCompleteHandler()
Donc il semble que vous ne pouvez pas créer une instance d'une classe, sauf si elle est respectée dans le cadre du projet SWF. Qui, si vrai, c'est ce que je veux faire. Je ne veux pas de gens qui essaient de faire cas de mes classes de télécharger le fichier SWF pour ce que je fais construire ici.
grâce
OriginalL'auteur Chris | 2009-10-28
Vous devez vous connecter pour publier un commentaire.
Vous devez faire deux choses:
Dashboard
un paquet (package.to.Dashboard
). Paquet-moins de classes sont donnés les différents attributs (noms protégé) en forme compilée que ceux avec des paquets, les rendant inaccessibles à l'externe des fonds souverains.Vous devriez alors être en mesure d'utiliser
getDefinitionByName
de l'SWF chargé etnew
le retourClass
.OriginalL'auteur Richard Szalay
Merci. Cette très bien fonctionné.
OriginalL'auteur ash
Essayer
ModuleLoader
classe. Voir cette article sur la façon de créer des modules.OriginalL'auteur dirkgently
Je recommande d'utiliser CASALib pour cela. J'ai créé toute une appli dont je ne connais pas les noms de classes jusqu'à ce que l'exécution. J'ai juste fait quelques interfaces de s'assurer que les fonctions les plus importantes étaient toujours disponibles. Le CASALib util appelé LibraryManager a une fonction pour l'instanciation d'une classe à partir d'un fichier SWF externe.
OriginalL'auteur Sandro
Que vous pourriez vouloir faire cela:
getDefinitionByName()
fonctionne pour les classes chargées par le courant swf pas les externes, les fonds souverains. Pour swf externe, vous devez donner la référence de l'objet loader qui fait chargé du particulier swf.Aussi, si vous ne le faites pas dans FlashBuilder, assurez-vous que la "principale de l'application" dans le fichier SWF que vous êtes en train de charger est un Sprite (ou peut-être un MovieClip, si je n'ai pas test), pas une Application (que vous obtenez par défaut dans le fichier MXML créé pour un nouveau SWF projet). Sinon, le code ci-dessus ne sera pas en mesure de trouver la définition de la classe que vous cherchez.
OriginalL'auteur bhups