2009-04-22 2 views
1

Всякий раз, когда я устанавливаю неопределенный индикатор выполнения в модальном всплывающем меню через PopUpManager, пока не отображается прогресс. Если я регулярно добавляю один и тот же ProgressBar к родителям или создаю всплывающее немодальное действие. Есть ли причина, почему она не работает в модальных всплывающих окнах? и способ заставить его работать?Flex: неопределенный ProgressBar в модальном всплывании?

Спасибо.

+0

Странно - не могли бы вы оставить немного кода, может быть? Может быть, легче сказать, что происходит. –

ответ

1

У меня были некоторые другие разработчики смотрят на это, оказывается, что это ошибка, но есть работа around..I'll пост мой исходный код, а затем измененный код для работы вокруг:

оригинал:

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

работа вокруг:

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

Мы можем сделать это с помощью containter.addChild (PG) eg.Canvas, а затем использовать PopUpManager.

0

У меня была та же проблема, но ни одна из других решений не помогла. Ниже приведен код, который создает проблему для меня:

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

Две закомментированы линии, что я понял, что другие предлагаемые решения. Мне удалось исправить это с помощью неудобный обходной путь ниже:

Шаг 1: Создание пользовательских MXML компонент, сохраненный в 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> 

Шаг 2: Использовать пользовательский компонент в коде

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

Похоже, что включение ProgressBar в TitleWindow важно.

0

Это работало для меня, как только я поставил ProgressBar внутри TitleWindow. Например, это не работает:

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

И это работало

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