2010-11-13 41 views
0

與其處理試圖找出向嵌入式SWF傳遞參數的問題,我繼續前進,並使用不同值編譯了20個SWF。這些SWF現在位於我的Flash Builder應用程序中。Flex 4 - 在應用程序中加載SWF

每個SWF都有一個狀態(使用includeIn),因此當用戶單擊按鈕切換狀態時,會顯示相應的SWF。

問題是,當用戶查看SWF時,它仍保持加載並在後臺運行。我想在用戶離開狀態時卸載所查看的SWF,然後在需要時再次加載它。如果這是不可能的,那麼當進入狀態時,我會解決只是簡單地重新加載SWF,然後讓其他19在後臺運行。

我有以下幾點:

<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()"/> 

隨着上面的代碼不工作與停止所有與遊戲,我仍然無法弄清楚如何強制將SWF重新加載。任何幫助將不勝感激!

回答

0

您可以一次只有一個使用混合器的SWF。你也不必使用狀態:)例如:

<?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

這很好用,謝謝! – ZQL 2010-11-14 22:35:23

+0

我很開心。我很高興能夠提供幫助 – 2010-11-17 10:37:30

相關問題