1

在我们的 Flex AIR 应用程序中,我们的应用程序主窗口相当窄。这意味着警报对话框的两边都被切掉了,而右键菜单被裁剪了。我们怎样才能让这些窗口不被我们的主窗口裁剪?

4

4 回答 4

2

将您的主 AIR 窗口变成一个不可见的透明窗口,并使您的应用程序的主要工作窗口成为不可见窗口的子窗口。然后,当您的 AIR 应用程序启动时,将不可见窗口设置为包含桌面的大小。然后,您将能够在此桌面区域上放置任意数量的窗口和对话框,而不必担心它们会像现在发生的那样被剪裁。

如果您想支持多屏幕显示 - 以便您的可见应用程序窗口可以从一个显示到另一个显示,那么将您的不可见窗口设置为整个图形坐标系的大小,以便它包含任何和所有显示屏幕。

一旦采用了不可见窗口的方法,您将能够实现类似于原生应用程序的窗口行为。

于 2009-01-24T15:33:28.500 回答
1

你如何显示警报?如果您使用 Alert.show(),它将使用默认宽度。但是,您可以通过创建警报对象、手动(甚至动态地)设置宽度,然后使用 PopUpManager 显示它、将其放置在您想要的位置并隐藏它来解决此问题。它需要更多的代码,但会给你更多的灵活性。

这是一个小样本:

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" 
    creationComplete="creationCompleteHandler();">
    <mx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.managers.PopUpManager;

            private function creationCompleteHandler():void
            {
                var alert:Alert = new Alert();

                alert.width = 100;

                alert.text = "this Alert is\n100px wide";

                PopUpManager.addPopUp(alert, this);

                PopUpManager.centerPopUp(alert);

                Alert.show("this Alert uses the default width");
            }
        ]]>
    </mx:Script>
</mx:WindowedApplication>
于 2008-12-10T16:29:23.233 回答
0

在 Flash 播放器内部运行 flex 应用程序时,无法在舞台外显示窗口。因此,完成这项工作的唯一方法是让您的应用程序更大。

虽然您可以使用 flex/ajax 桥并调用 javascript 警报框,但它们不会受到舞台的约束。但它不会像应用程序的其他部分那样被蒙皮,并且需要更多的工作才能上钩,特别是如果你正在听用户点击确定按钮......

于 2008-11-25T16:05:16.267 回答
0

我相信 adobe air 的 dojo 扩展应该能够满足您的需求。我自己从来没有使用过它,也不确定会有什么权衡,但它可能值得一看。

http://sitepen.com/labs/dair/

于 2009-01-26T09:07:36.117 回答