2009-04-22 6 views
1

Immer wenn ich einen unbestimmten Fortschrittsbalken in einem modalen Pop-up über PopUpManager einstelle, wird kein Fortschritt angezeigt. Wenn ich die gleiche ProgressBar regelmäßig zum Eltern hinzufüge oder das Pop-up non-modal mache, funktioniert es. Gibt es einen Grund, warum es in modalen Pop-ups nicht funktioniert? und eine Möglichkeit, es zum Laufen zu bringen?Flex: unbestimmte ProgressBar in Modal Pop-Up?

Danke.

+0

Komisch - Sie ein wenig Code schreiben könnte, vielleicht? Vielleicht ist es einfacher zu sagen, was vor sich geht. –

Antwort

1

ich einige andere Entwickler Blick auf diese gehabt haben, stellt sich heraus, es ist ein Fehler, aber es ist ein Werk around..I'll meiner ursprünglichen Code und dann der geänderte Code für die Arbeit schreiben um:

original:

private function showLoading(e:Event = null):void 
      { 
       if(_progBar == null) 
       { 
        _progBar = new ProgressBar(); 
        _progBar.width = 200; 
        _progBar.indeterminate = true; 
        _progBar.labelPlacement = 'center'; 
        _progBar.setStyle("removedEffect", fade); 
        _progBar.setStyle("addedEffect", fade); 
        _progBar.setStyle("color", 0xFFFFFF); 
        _progBar.setStyle("borderColor", 0x000000); 
        _progBar.setStyle("barColor", 0xf4b60f); 
        _progBar.label = ""; 
       } 
       PopUpManager.addPopUp(_progBar,this,true); 
       PopUpManager.centerPopUp(_progBar); 
      } 

Arbeit um:

private function showLoading(e:Event = null):void 
      { 
       if(_progBar == null) 
       { 
        _progBar = new ProgressBar(); 
        _progBar.width = 200; 
        _progBar.indeterminate = true; 
        _progBar.labelPlacement = 'center'; 
        _progBar.setStyle("removedEffect", fade); 
        _progBar.setStyle("addedEffect", fade); 
        _progBar.setStyle("color", 0xFFFFFF); 
        _progBar.setStyle("borderColor", 0x000000); 
        _progBar.setStyle("barColor", 0xf4b60f); 
        _progBar.label = ""; 
        _progBar.mode = ProgressBarMode.MANUAL; 
       } 
       PopUpManager.addPopUp(_progBar,this,true); 
       PopUpManager.centerPopUp(_progBar); 
       _progBar.setProgress(0, 0); 
      } 
0

Wir können dies tun, indem containter.addChild (Pg) eg.Canvas und anschließend Popupmanager verwenden.

0

Ich hatte das gleiche Problem, aber keine der anderen Lösungen geholfen. Unten ist der Code, der das Problem für mich produziert:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" applicationComplete="applicationComplete();"> 
    <mx:Script><![CDATA[ 
     import mx.controls.ProgressBar; 
     import mx.managers.PopUpManager; 
     private function applicationComplete():void 
     { 
      var progressBar:ProgressBar = new ProgressBar() 
      progressBar.indeterminate = true; 
      PopUpManager.addPopUp(progressBar, this, true); 
      //this.addChild(progressBar);   including this line overrides the popup 
      //progressBar.setProgress(0, 0);  including this line makes no difference 
     } 
    ]]></mx:Script> 
    <mx:Label text="hello"/> 
</mx:Application> 

Die beiden kommentierten aus Linien sind das, was ich die anderen vorgeschlagenen Lösungen zu verstehen. Ich schaffte dies mit der ungeschickten Abhilfe unten zu beheben:

Schritt 1: Erstellen Sie benutzerdefinierte MXML-Komponente, gespeichert als Progress.mxml

<?xml version="1.0" encoding="utf-8"?> 
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml"> 
    <mx:ProgressBar indeterminate="true" /> 
</mx:TitleWindow> 

Schritt 2: Verwenden Sie benutzerdefinierte Komponente in Code

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" applicationComplete="applicationComplete();"> 
    <mx:Script><![CDATA[ 
     import mx.controls.ProgressBar; 
     import mx.managers.PopUpManager; 
     import Progress; 
     private function applicationComplete():void 
     { 
      var progress:Progress = new Progress(); 
      PopUpManager.addPopUp(progress, this, true); 
      PopUpManager.centerPopUp(progress); 
     } 
    ]]></mx:Script> 
    <mx:Label text="hello"/> 
</mx:Application> 

Es scheint wichtig zu sein, die ProgressBar in TitleWindow zu platzieren.

0

Es funktionierte für mich, sobald ich die ProgressBar in ein TitleWindow legte. Zum Beispiel wurde dies nicht funktioniert:

var waitingpopup:ProgressBar = new ProgressBar(); 
waitingpopup.indeterminate = true; 
waitingpopup.label = "Please wait, loading...";  
PopUpManager.addPopUp(waitingpopup, this, true); 

Und das funktionierte

var waitingpopup:TitleWindow = new TitleWindow(); 
waitingpopup.title = "Please Wait"; 
var pb:ProgressBar = new ProgressBar(); 
pb.indeterminate = true; 
pb.label = "Loading..."; 
waitingpopup.addChild(pb);  
PopUpManager.addPopUp(waitingpopup, this, true);