2011-08-16 10 views
0

私のアプリケーションには、私のアプリケーションにロードするモジュールが2つあります。進捗バーを含むモジュールをロードする

<local:moduleloader url="Module1.swf" id="modulel" /> 
<local:moduleloader url="Module2.swf" id="module2" /> 

各モジュールをロードしているときに、進行状況バーが表示されます。プログレスバーは表示されますが、離れません。それはアプリケーションのフレーム全体にとどまります。モジュールローダは次のとおりです。

(またFlex 3の同じ作品であることに注意が、Flexの4使用していますし、Fxの4で、それはしません)

<mx:ModuleLoader xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" 
        xmlns:mx="library://ns.adobe.com/flex/mx" 
        xmlns="*" 
        creationComplete="initTheModuleLoader()"> 
    <fx:Script> 
     <![CDATA[ 
      import mx.core.Application; 
      import mx.core.FlexGlobals;  

      private var ParentApp:* = FlexGlobals.topLevelApplication; 
      private var standin:DisplayObject; 

      private function initTheModuleLoader():void { 
       addEventListener("loading", onLoading); 
       addEventListener("progress", onProgress); 
       addEventListener("setup", onSetup); 
       addEventListener("ready", onReady); 
       addEventListener("error", onError); 
       standin = panel; 
      } 

      private function onUrlChanged(event:Event):void { 
       if (url == null) { 
        if (contains(standin)) 
         removeChild(standin); 
       } else { 
        if (!contains(standin)) 
         addChild(standin); 
       } 
       progress.indeterminate=true; 
      } 

      import mx.controls.Alert; 
      private function onLoading(event:Event):void { 
       //progress.label=languageXml.lastResult.progress.progressonLoading +' ' + url;//Loading module 
       progress.label = "Loading module" + ' ' + url;//Loading module 
       if (!contains(standin)) 
        addChild(standin); 
       progress.indeterminate=true; 
      } 

      private function onProgress(event:Event):void {   
       //progress.label=languageXml.lastResult.progress.progressonProgress;   //Loaded %3%%... 
       progress.label = "Loaded %3%%...";   //Loaded %3%%... 
       progress.indeterminate=false; 
      } 

      private function onSetup(event:Event):void { 
       //progress.label=String(languageXml.lastResult.progress.progressonSetup).replace('###',url) 
       progress.label = "on SetUp"; 
       progress.indeterminate=false; 
      } 

      private function onReady(event:Event):void { 
       //progress.label= String(languageXml.lastResult.progress.progressonReady).replace('###',url); 
       progress.label = "onReady"; 
       if (contains(standin)) 
        removeChild(standin); 
      } 

      private function onError(event:Event):void { 
       //progress.label=languageXml.lastResult.progress.progressonError + " " + url; 
       progress.label = "Error"; 
      } 

      private function onUnload(event:Event):void { 
       if (url == null) { 
        if (contains(standin)) 
         removeChild(standin); 
       } else { 
        if (!contains(standin)) 
         addChild(standin); 
       } 
       progress.indeterminate=true; 
       progress.label="Module " + url + " was unloaded!"; 
      } 
     ]]> 

    </fx:Script> 

    <mx:Panel id="panel" width="100%" borderStyle="none" > 
     <mx:ProgressBar width="100%" id="progress" source="{this}" /> 
    </mx:Panel> 

</mx:ModuleLoader> 

誰もがこの上で助けることができますか?

+0

Flex 4をすでに使用している場合は、4.5にアップグレードして新しいモジュール/モジュールローダーを使用できない理由がありますか? –

+0

実際、Flex 3からFlex 4にアップグレードしたばかりです。そのため、現時点では残念ながらFlex 4に固執する必要があります。 – FlexyBoz

+0

すでに3から4にアップグレードしている場合、4から4.5までは問題ありません。 –

答えて

0

私はそれを得ました。

まず、Flex 3では、creationComplete関数にInitModuleLoader関数を入れますが、Flex 4ではこのメソッドをinitializeで指定する必要があります。

は、第二のFlex 4(これは、Flex 3でない)には表示されませんので、私はMX置き換え:MXでパネルを:HBoxのかS:グループ

ザッツをすべて、それが動作します。

しかし、上記のようにJ_A_Xが推奨されているように、新しいmoduleLoader thats skinnableがあるので、Fx 4.5を使用する方が良いです。

+0

あなたは「私が置き換えた」の後に何をすべきかを明確にすることができますか?そうすれば、あなたは何をしたのか理解できます。 –

+0

@Amy Blankenship私は答えを編集しました...今、そのok..sorry – FlexyBoz

0

あなたのonReadyハンドラはスタンダードを削除しますが、プログレスバーは削除しません。

+0

しかしProgressBarはstandin(Panel)にあり、論理的にProgressBarを削除する必要があります。それにもかかわらず、私はremoveChild(進行)をやってみました。問題は依然として続きます。 – FlexyBoz

+0

進行状況が実際にパネルに表示されます。それを削除するか、表示の変更を試みてください。 –

+0

あなたはパネルの可視性を変更することを意味しますか?私はそれほどの希望なくそれを試しました。または、パネルを完全に削除してプログレスバーのみを用意する必要があるということですか? – FlexyBoz

関連する問題