PopUpManagerを介してモーダルポップアップに不確定なプログレスバーを設定すると、進行状況が表示されません。同じProgressBarを親に定期的に追加するか、ポップアップを非モーダルにすると、機能します。モーダルポップアップで機能しない理由はありますか?そしてそれを機能させる方法は?
ありがとう。
PopUpManagerを介してモーダルポップアップに不確定なプログレスバーを設定すると、進行状況が表示されません。同じProgressBarを親に定期的に追加するか、ポップアップを非モーダルにすると、機能します。モーダルポップアップで機能しない理由はありますか?そしてそれを機能させる方法は?
ありがとう。
他の開発者にこれを見てもらいましたが、これはバグであることが判明しましたが、回避策があります..元のコードを投稿してから、回避策のために変更されたコードを投稿します。
オリジナル:
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);
}
これを行うには、container.addChild(Pg) eg.Canvas を使用してから、PopUpManager を使用します。
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);
私は同じ問題を抱えていましたが、他の解決策はどちらも役に立ちませんでした。以下は、私にとって問題を引き起こすコードです。
<?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>
コメントアウトされた 2 つの行は、他の提案された解決策であると私が理解したものです。以下の厄介な回避策を使用して、これを修正することができました。
ステップ 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 内に配置することが重要なようです。