2009-07-09 7 views
2

Je souhaite intégrer un film Flash dans Flex (Flex Builder 3), à l'aide du script ActionScript 3, et avoir mes fonctions d'appel de film Flash dans Flex et vice versa.Flash et Flex

Est-ce possible?

+0

Je pense que le titre de ceci a besoin d'être reformulé car la question n'est pas claire. –

Répondre

2

Oui, c'est possible. Si vous voulez intégrer un autre swf dans votre application Flex, vous avez quelques options.

Option 1 - Intégrez le swf, en ligne, dans un composant SWFLoader. Cette option présente certains inconvénients en termes de sécurité, car le swf est chargé dans un autre domaine d'application. La communication entre votre application Flex et le contenu intégré peut parfois être difficile. Vous pouvez donner un identifiant à ce composant, écouter l'événement complet, puis parler à la propriété de contenu de SWFLoader pour accéder au swf chargé. Quelque chose comme:

<mx:Script> 
    <![CDATA[ 
     private function completeHandler(event : FlexEvent) : void 
     { 
      trace(mySwfLoader.content); 
     } 
    ]]> 
</mx:Script> 


<mx:SWFLoader id="mySwfLoader" source="@Embed(source='YourSwf.swf') complete='completeHandler(event)" /> 

Option 2 - Vous pouvez utiliser une balise meta pour intégrer le swf en tant que classe, puis créer une instance de cette classe dans le code. Cela donne beaucoup de flexibilité mais vous perdez les avantages de pouvoir ajouter l'objet de manière déclarative. Quelque chose comme:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="creationCompleteHandler(event)"> 
    <mx:Script> 
     <![CDATA[ 

      [Embed(source="mySourceSwf.swf")] 
      private var mySourceSwfClass : Class 

      private function creationCompleteHandler(event : FlexEvent) : void 
      { 
       var mySourceSwf = new mySourceSwfClass(); 

       myCanvas.addChild(mySourceSwf); 

       trace(mySourceSwf); 
      } 
     ]]> 
    </mx:Script> 
    <mx:Canvas id="myCanvas" /> 
</mx:Application> 

Option 3 - Ne pas un swf du tout. Avoir tout ce que vous voulez intégrer comme un UIMovieClip dans le fla. Vous pouvez ensuite créer un fichier .swc chaque fois que vous publiez ce fichier. Vous pouvez ensuite créer un lien vers ce fichier swc dans Flex Builder. ceci ajoutera alors automatiquement ce MovieClip comme référencable dans votre projet (ceci peut avoir besoin de plus d'investigation de votre part). vous pouvez essentiellement faire quelque chose comme:

<local:MyMovieClipInSwc id="myMovieClip" /> 

De cette façon, vous obtenez les avantages des deux mondes, balisage déclaratif et tout dans le même domaine d'application. Une chose que je dirais à propos de cette méthode est qu'Adobe a fièrement monté avec la classe UIMovieClip et ses performances sont nulles. Sachez simplement que si vous commencez à l'utiliser partout où vous appliquez peut devenir extrêmement lent.