1

PopUpManagerを介してモーダルポップアップに不確定なプログレスバーを設定すると、進行状況が表示されません。同じProgressBarを親に定期的に追加するか、ポップアップを非モーダルにすると、機能します。モーダルポップアップで機能しない理由はありますか?そしてそれを機能させる方法は?

ありがとう。

4

4 に答える 4

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);
            }
于 2009-04-23T13:25:20.990 に答える
0

これを行うには、container.addChild(Pg) eg.Canvas を使用してから、PopUpManager を使用します。

于 2010-01-28T08:59:17.803 に答える
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);
于 2010-09-17T14:07:47.133 に答える
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>

コメントアウトされた 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 内に配置することが重要なようです。

于 2010-02-24T22:11:47.080 に答える