0

我正在尝试在 Flash 中构建一个自定义模式对话框。我选择的方法是创建一个带有 UI 的影片剪辑类,该类具有向其添加按钮的功能的对话框。添加完所有按钮后,我调整 ui 的大小并将其显示在屏幕上。

它工作到这一点。现在,我希望调用此对话框的任何内容都等到选择按钮后,用户才能执行其他任何操作。类似于以下内容:

var dialog:MyDialog = new MyDialog();
dialog.addButton(new MyButton("Foo"));
dialog.addButton(new MyButton("Bar"));
var result:String = dialog.show(); // we will wait here

在 dialog.show 中,我希望显示影片剪辑,然后等待用户单击对话框上的按钮,然后返回。MouseEvent.CLICK 事件虽然是异步的,但我不知道如何等待它。

另一种方法是为添加到调用对话框的屏幕的对话框创建一个完整的自定义完成事件,我可以继续执行逻辑并有一个禁用其他输入的布尔值,但这是一个非常大的麻烦,我已经从来没有做过类似的事情。

4

1 回答 1

1

您的描述是对同步和异步的误解。

当对话框出现时,您仍然希望用户能够点击对话框按钮。如果该过程是同步的,那么整个程序将冻结,因为鼠标点击动作的例程永远不会到达。请记住,flash 是单线程的。

具有弹出窗口的线程与底层应用程序共享相同的线程。

最简单的事情就是在按钮上设置一个事件,该事件会调度一些您可以在应用程序中监听的关闭事件。不需要自定义事件类。

dispatchEvent(new Event("close"))

举个例子。

如果您担心用户与应用程序外部的部件进行交互,那么您可以简单地在弹出窗口后面绘制一个矩形,并将 mouseEnabled 设置为 true,或者使用 Flex 的模型对话框类进行检查。

于 2012-07-07T18:52:51.127 回答