2010-11-18 16 views
2

J'ai un fichier swf sample.swf qui a sa classe actionscript dans Main.as. Ce Main.as a divers objets déclarés comme publics dedans. Par exemple, considérons un objet myData de la classe MyData (dans MyData.as).Comment appeler les fonctions actionscript dans le fichier SWF chargé dans swfLoader de mon application Flex?

Je charge ce fichier swf dans mon application AIR à l'aide de swfLoader. Je veux savoir comment accéder à myData.func() en utilisant swfLoader.loaderInfo.content. Merci d'avance ... :)

Répondre

2

dans votre gestionnaire init, il devrait être quelque chose comme:

function myLoadHandler(e:Event) 
{ 
    MyData(e.target.content.myDataInstance).func(); 
} 

myLoadHandler est le gestionnaire d'événements pour l'événement Event.INIT (COMPLETE est déclenché lorsque tous les octets sont chargés, INIT est déclenché après SWF initialisée et ses membres sont accessibles), et myDataInstance est la référence publique à votre instance MyData dans votre SWF enfant.

+0

Merci @gthmb. Juste pour ajouter à vos précieuses informations. Si ce n'est pas MyData (dans le cas où cette classe est présente uniquement dans le swf et non dans flex), vous pouvez utiliser Object typecasting. J'ai essayé même cet objet (swfLoader.content) .myDataInstance.func(); et ça a marché aussi. – Goje87

0

Je l'ai fait avant. Je ne peux pas me souvenir du chemin exact vers les données mais un moyen de le savoir est d'utiliser le débogueur dans flex. Ajoutez un événement Event.Complete pour le chargeur et ajoutez un point d'arrêt à l'intérieur de la fonction complète que vous appelez. Ajoutez ensuite swfLoader.loaderInfo.content à la liste de surveillance des expressions et commencez à explorer pour trouver ce que vous recherchez. Notez le chemin et essayez de l'appeler dans une fonction de test.