每当我通过PopUpManager在模态弹出窗口中设置不确定的进度条时,都不会显示任何进度。如果我定期向父母添加相同的ProgressBar,或者使弹出非模态,它可以工作。有没有理由说它在模态弹出窗口中不起作用?以及使其有效的方法吗?
感谢。
答案 0 :(得分:1)
我有其他一些开发人员看这个,结果证明这是一个错误,但有一个解决方法..我会发布我的原始代码,然后改变代码来解决这个问题:
原:
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);
}
答案 1 :(得分:0)
我们可以通过使用container.addChild(Pg)eg.Canvas然后使用PopUpManager来实现。
答案 2 :(得分: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中非常重要。
答案 3 :(得分: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);