2010-11-13 4 views
0

Plutôt que d'essayer de comprendre le passage de paramètres à un fichier SWF incorporé, je suis allé de l'avant et j'ai fait 20 SWF tous compilés avec des valeurs différentes. Ces fichiers SWF sont maintenant dans mon application Flash Builder.Flex 4 -Rechargement d'un fichier SWF dans l'application

Il y a un état pour chaque SWF (using includeIn), donc lorsque l'utilisateur clique sur le bouton pour changer d'état, le SWF approprié est affiché.

Le problème est que lorsqu'un utilisateur affiche un fichier SWF, il reste chargé et s'exécute en arrière-plan. Je voudrais décharger le fichier SWF affiché lorsque l'utilisateur quitte l'état et le charger quand il est à nouveau nécessaire. Si ce n'est pas possible, alors je me contenterai de recharger simplement le SWF quand l'état est entré, et laisser les autres 19 fonctionner en arrière-plan.

Je donne les résultats suivants:

<fx:Script><![CDATA[ 

    private var flashMovie1:MovieClip; 
    private var flashMovie2:MovieClip; 

    private function initFirst():void{ 
     flashMovie1 = dmp_first.content as MovieClip; 
    } 

    private function initSecond():void{ 
     flashMovie2 = dmp_second.content as MovieClip; 
    } 

    protected function btnFirst_clickHandler():void 
    { 
     flashMovie2.Stop(); 
     currentState='First'; 
     flashMovie1.Play(); 
    } 

    protected function btnSecond_clickHandler():void 
    { 
     flashMovie1.Stop(); 
     currentState='Second'; 
     flashMovie2.Play(); 
    } 

]]></fx:Script> 

<mx:SWFLoader id="dmp_first" includeIn="First" source="assets/images/dmp_first.swf" complete="initFirst()"/> 

<mx:SWFLoader id="dmp_second" includeIn="Second" source="assets/images/dmp_second.swf" complete="initSecond()"/> 

Avec le code ci-dessus ne fonctionne pas du tout avec Stop and Play, je ne peux toujours pas comprendre comment forcer un fichier SWF à recharger. Toute aide serait grandement appréciée!

Répondre

0

Vous ne pouvez avoir qu'un seul swf à la fois en utilisant un conatiner. Aussi vous n'avez pas besoin d'utiliser des états :) par exemple:

<?xml version="1.0" encoding="utf-8"?> 
<s:Application 
xmlns:fx = "http://ns.adobe.com/mxml/2009" 
xmlns:s  = "library://ns.adobe.com/flex/spark" 
xmlns:mx = "library://ns.adobe.com/flex/mx" 
minWidth = "955" 
minHeight = "600"> 

<s:layout> 
    <s:VerticalLayout/>  
</s:layout> 

<fx:Script> 
    <![CDATA[ 
     import mx.controls.SWFLoader; 

     private function onAppCreationComplete():void 
     { 
      showSWF(0); 
     } 

     private function onSwfComboChange():void 
     { 
      showSWF(cbxSwfData.selectedIndex); 
     } 

     private function showSWF(index:int):void 
     { 
      grpContainer.removeAllElements(); 

      var swfLoader:SWFLoader = new SWFLoader(); 
      grpContainer.addElement(swfLoader); 
      swfLoader.load("assets/swfs_files/swf"+index+".swf"); 
     } 

    ]]> 
</fx:Script> 

<s:ComboBox 
    id     = "cbxSwfData" 
    dataProvider  = "{['swf1','swf2','swf3']}" 
    change    = "onSwfComboChange()"/> 

<s:Group 
    id     = "grpContainer" 
    width    = "50%" 
    height    = "50%"/> 

</s:Application> 
+0

Cela a fonctionné parfaitement, merci! – ZQL

+0

je suis bienvenu. Je suis content de pouvoir aider –