2011-06-24 4 views
0

J'ai frappé un mur de briques après avoir essayé presque tous les exemples que j'ai rencontrés. J'espérais que quelqu'un ici pourrait peut-être m'aider.Accéder à la méthode SWF à partir de Flex

En résumé, j'ai un parent Flex qui incorpore un fichier Flash SWF qui a une méthode à laquelle Flex doit accéder.

MXML:

<mx:states> 

     <mx:State name="intro"> 
      <mx:AddChild position="lastChild"> 
       <mx:SWFLoader x="285" y="170" id="introSwfLoader" source="@Embed(source='Introduction.swf')" /> 
      </mx:AddChild> 
     </mx:State> 

J'ai essayé le typage fort SWFLoader comme MovieClip pour prendre le contrôle de celui-ci, mais ont pas eu de chance.

éclair:

function reset(){ 

    // some code 
} 

Quelqu'un at-il des suggestions? Essentiellement, tout ce que je dois faire est de réinitialiser/recharger Flash SWF lorsque l'état de mx: change.

Merci pour votre temps ..

+0

Avez-vous essayé la mise en place et en utilisant un LocalConnection pour communiquer entre les deux SWF? – JeffryHouser

+0

Je pense que vous devriez quantifier ce que signifie "pas de chance". Avez-vous une erreur d'exécution? Une erreur de compilation? Rien ne se passe? Ou quelque chose se passe-t-il? Si quelque chose arrive, qu'est-ce que c'est? Et pourquoi est-ce différent de ce que vous attendiez? – JeffryHouser

+0

différents scénarios ont eu des résultats différents. Je n'ai pas essayé LocalConnection car j'étais sous l'impression que c'était pour AS2? J'utilise actuellement AS3. –

Répondre

1

Vous ne devriez pas avoir besoin LocalConnection.

Essayez ceci - ce n'est pas la solution la plus élégante, mais cela semble fonctionner - dans une certaine méthode dans votre application Flex, vous pouvez accéder au fichier SWF chargé en tant que MovieClip cette façon:

function accessLoadedSWFAsMovieClip():void{ 
    var container:DisplayObjectContainer = introSwfLoader.content as DisplayObjectContainer; //gets the SWFLoader content as a DisplayObjectContainer 
    var loader:Loader = container.getChildAt (0) as Loader; // gets the first child of the DisplayObjectContainer, which is a Loader (not sure why) 
    var mc:MovieClip = loader.content as MovieClip; //access to the main timeline of the Loader's content (cast as a MovieClip, because we can then call ambiguous functions with no errors. I assume if your loaded swf had a document class you could cast it as the document class here) 
    mc.reset(); // call the function inside our loaded SWF 
} 
+0

Très différent de ma réponse originale mais j'ai testé cela rapidement et ça marche vraiment :) – sapptime

+0

... bosse - avez-vous compris? – sapptime

Questions connexes