2010-11-13 3 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()"/> 

Наряду с выше код не работает на всех с Stop и Play, я до сих пор не могу понять, как заставить SWF для перезагрузки. Любая помощь будет принята с благодарностью!

ответ

0

У вас может быть только один swf за один раз, используя conatiner. Также вам не нужно использовать состояния :) для ex:

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

+0

u're wellcome. Я рад, что могу помочь –

Смежные вопросы