質問

空用いて、以下のコード:

theDialog=PopUpManager.createPopUp(こTheDialogClass,true)としてTheDialogClass;theDialog.addEventListener(FlexEvent.CREATION_COMPLETE,cpuIntensiveCalc);

末cpuIntensiveCalcのダイアログが削除されます。ダイアログのユーザーに知らせる"ものづください。"

問題はcpuIntensiveCalc開始前のダイアログが描く.したがって、ユーザ体験の申請が凍り10秒間のない指標は、モーダルダイアログボ短時間(秒未満)の画面になります。

Adobe docsよってパワーアップをするという約creation_complete

派遣の場合、コンポーネントの建設、 財産加工、測定、レイアウト、画します。

この感じは、正しいイベントです。
の名称の完全性、また

theDialog=PopUpManager.createPopUp(こTheDialogClass,true)としてTheDialogClass;cpuIntensiveCalc();

が同じだった。

つくばイノベーション

正しい解決策はありません

他のヒント

デジタル化できなかった理由は、Flashプレイヤーは単一のネジ切りなすブロックのUIからの反応のダイアログのポップアップまでの数字のチャンクを終了しました。

Hackyの修正時間---

いる。

(この一作が未審査)を包むcpuIntensiveCalc()を呼ぶcallLaterのUIできる仕上がりレンダリングする前にブロックのレンダリング

または

使用の"グリーンスレッドの"割アップ処理のままでいることを完全にブロックのUI処となります。 .

いたるとともに、同誌掲載号の注目=>の場合でもこのスレッドは古いですが、そう思ってやってきました貢献も)

(免責事項:このは醜いうことになるok UI層---;-))

フレックスは単一のネジ付き(少なくとも弊社開発者の視点だと思い背景にスレッドはVM)

=>は実行コードにUIのスレッドのユーザで行った行為にパーツをプレゼント!任意の呼び出更新UIコンポーネントのようなsetProgressはsetLabelのみの描画される画面上での描画サイクル(再UiComponent生命サイクル)

に=>therory話"cpuIntensiveCalc"にcallLaterの枠組みの表示ポップアップを実行する前に移の研究"に関するお問合せ

実際にものに気付いたのはいいカップルのUI cylces前にポップアップが表示されるので、このように:

new MuchLaterRunner(popup, 7, cpuIntensiveCalc).runLater();

MuchLaterRunnerを定義するようになります:

public class MuchLaterRunner
    {
        var uiComp:UIComponent;
        var currentCounter = 0;
        var cyclesToWaitBeforeExecution=0;

        var command:Function;

        public function MuchLaterRunner(uiComp:UIComponent, cyclesToWaitBeforeExecution:uint, command:Function)
        {
            this.uiComp = uiComp;
            this.command = command;
            this.cyclesToWaitBeforeExecution =cyclesToWaitBeforeExecution;
        }

        public function runLater() {

            currentCounter ++;
            if (currentCounter >= cyclesToWaitBeforeExecution) {
                uiComp.callLater(command);
            } else {
                // wait one more cycle...
                uiComp.callLater(runLater);
            }
        }

    }

問題は、同じ呼び出し時にsetProgressその後:しなければな分cpuIntensiveCalc小さな呼び出し可能オブジェクトの方法できるた各UIサイクル、それ以外のprogressbarん,err,す。

利用enterFrameイベントにポップアップ.も忘れずに削除リスナーのenterFrameイベントハンドラの-その他のcpuに集中的な方法で呼び出される各フレーム、チップ.できませんので、使用個数としてカウンターに保incrementingでの入力フレームハンドラ-コcpu重方式の場合のみカウンターに達し、適切な値です。の適切な"価値のトレイル、エラーになります。

theDialog = PopUpManager.createPopUp(this, TheDialogClass, true) as TheDialogClass;
theDialog.addEventListener(Event.ENTER_FRAME, onEnterFrame);
private function onEnterFrame(e:Event):void
{
  //can use theDialog instead of e.currentTarget here.
  (e.currentTarget).removeEventListener(Event.ENTER_FRAME, onEnterFrame);
  cpuIntensiveCalc();
}
//in case the above method doesn't work, do it the following way:
theDialog.addEventListener(Event.ENTER_FRAME, onEnterFrame);
private var _frameCounter:Number = 0;
private function onEnterFrame(e:Event):void
{
  _frameCounter++;
  var desiredCount:Number = 1;//start with one - increment until it works.
  if(_frameCounter < desiredCount)
    return;
  //can use theDialog instead of e.currentTarget here.
  (e.currentTarget).removeEventListener(Event.ENTER_FRAME, onEnterFrame);
  cpuIntensiveCalc();
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top