Flex加载module时候显示进度条

      在加载module的时候不能使用重写的SparkDownloadProgressBar或DownloadProgressBar,在module中不支持preloader属性,这样就要使用progressbar来实现显示进度条了。这样在加载器后面用一个progressbar,一定要放在加载器后面,不然显示的时候会被ModuleLoader 遮挡住。moduleloader有3个事件,loading为正在加载中,progress为进度事件,ready为加载完成。mode="manual";这个属性一定要加上,不然不显示进度,百分比出不来。

代码可以这样
<mx:script>
      public function loading(e:ModuleEvent):void{
                   myProgressBar.setProgress(e.bytesLoaded,e.bytesTotal);
                   myProgressBar.label="模块已加载"+Math.round((e.bytesLoaded * 100 / e.bytesTotal)) + "%";
             }
</mx:script>
<mx:ModuleLoader ready="myProgressBar.visible=false" loading="myProgressBar.visible=true" progress="loading(event)"  id="module" />
<mx:ProgressBar id="myProgressBar" horizontalCenter="0" verticalCenter="0" mode="manual"  width="200"/>

 

还可以如下操作:

  private var myProgressBar:ProgressBar;
   
   private function init():void{
    m1.url="MyModule.swf";
    m1.addEventListener(ModuleEvent.READY,getModule);
   }
   
   private function getModule(event:ModuleEvent):void{
    (m1.child as MyModule).getModuleSuccess();
   }
   
   private function loading(event:ProgressEvent):void{
    myProgressBar.setProgress(event.bytesLoaded, event.bytesTotal); 
    myProgressBar.label="模块已加载"+Math.round((event.bytesLoaded * 100 / event.bytesTotal)) + "%";
   }
   
   private function removeProgressBar(event:Event):void{
    //清除
    PopUpManager.removePopUp(myProgressBar);
   }
   
   private function popUpProgressBar(event:Event):void{
    //弹出
    myProgressBar= new ProgressBar();
    myProgressBar.mode="manual";
    myProgressBar= PopUpManager.createPopUp(this, ProgressBar, true) as ProgressBar; 
    PopUpManager.centerPopUp(myProgressBar); 

    myProgressBar.x = (this.stage.width - myProgressBar.width)/2;
    myProgressBar.y = (this.stage.height - myProgressBar.height)/2;
   }
   
  ]]>
 </fx:Script>
 
 <mx:ModuleLoader id="m1" width="100%" height="100%" loading="popUpProgressBar(event)" progress="loading(event)" ready="removeProgressBar(event)"/>

你可能感兴趣的:(loading,moduleloader)