让您的 Flex 代码使用事件来等待对话框。在主线程中,注册一个等待对话框关闭的事件处理程序。在对话框中的 OK 上,调度对话框完成事件。
对于 Cairngorm,这类似于:
在主线程中:
CairngormEventDispatcher.getInstance().addEventListener(ClosingDialogCompleteEvent.DIALOG_COMPLETE, onClosingDialogComplete);
(如果您想避免在完成之前返回,请在计时器和全局变量上循环。)
在对话框关闭处理程序中:
CairngormEventDispatcher.dispatchEvent(new ClosingDialogCompleteEvent(<parameters>));
事件处理程序:
public function onClosingDialogComplete (e: ClosingDialogCompleteEvent):void
{
param1 = e.param1;
param2 = e.param2;
// etc.
// Continue processing or set the global variable that signals the main thread to continue.
}
为此,必须定义 ClosingDialogCompleteEvent 类。该类的部分代码是:
package com. ... .event // You define where the event lives.
{
import com.adobe.cairngorm.control.CairngormEvent;
public class ClosingDialogCompleteEvent extends CairngormEvent
{
// Event type.
public static const DIALOG_COMPLETE:String = "dialogComplete";
public var param1:String;
public var param2:String;
public function ClosingDialogCompleteEvent(param1:String, param2:String)
{
super(DIALOG_COMPLETE);
this.param1 = param1;
this.param2 = param2;
}
}
}
等待事件是在 Flex 中进行同步的最佳方式。它也适用于启动对话框。在仅 flex 的应用程序中,它工作得特别好。