2009-04-22 8 views
1

Chaque fois que je définis une barre de progression indéterminée dans une fenêtre contextuelle modale via PopUpManager, aucune progression n'est affichée. Si j'ajoute régulièrement le même ProgressBar au parent ou que le pop-up est non-modal, cela fonctionne. Y at-il une raison pour laquelle cela ne fonctionne pas dans les pop-ups modaux? et un moyen de le faire fonctionner?Flex: ProgressBar indéterminé dans une fenêtre contextuelle modale?

Merci.

+0

étrange - pourrait vous envoyer un peu de code, peut-être? Peut-être plus facile de dire ce qui se passe. –

Répondre

1

J'ai eu d'autres développeurs regarder cela, il se révèle qu'il est un bug, mais il y a un travail around..I'll poster mon code d'origine, puis le code modifié pour le travail autour de:

d'origine:

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); 
      } 

travail autour:

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

Nous pouvons le faire en utilisant containter.addChild (p) eg.Canvas puis utilisez PopUpManager.

0

J'ai eu le même problème, mais aucune des autres solutions n'a aidé. Voici le code qui produit le problème pour moi:

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

Les deux lignes commentées sont ce que je compris être les autres solutions proposées. J'ai réussi à résoudre ce problème en utilisant la solution de contournement maladroite ci-dessous:

Étape 1: Créer composant personnalisé MXML, enregistré sous 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> 

Etape 2: Utiliser un composant personnalisé dans le 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> 

Il semble que mettre le ProgressBar dans la TitleWindow est important.

0

Cela a fonctionné pour moi une fois que j'ai mis le ProgressBar dans une TitleWindow. Par exemple, cela ne fonctionnait pas:

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

Et cela a fonctionné

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); 
Questions connexes