English 中文(简体)
如何使一个窗口显示在应用程序之外?
原标题:
  • 时间:2008-11-24 19:54:34
  •  标签:

在我们的Flex AIR应用程序中,我们的主应用程序窗口相当窄。这意味着警报对话框在两侧都被切割,而右键菜单则被裁剪。我们如何使这些窗口不被我们的主窗口裁剪?

问题回答

将您的主AIR窗口转换为不可见的透明窗口并将您的应用程序的主要工作窗口作为不可见窗口的子窗口。然后在您的AIR应用程序启动时,将不可见窗口的大小设置为涵盖桌面的大小。然后,您将能够在此桌面区域上定位您想要的任意数量的窗口和对话框,而不必担心它们被裁剪,就像现在发生的情况一样。

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

一旦你采用了透明窗口的方法,你就能实现类似本地应用程序的窗口行为。

你是如何显示警报的?如果你使用Alert.show(),它会使用默认的宽度。但是,你可以通过创建一个Alert对象,手动设置宽度(甚至动态设置宽度),然后使用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
100px wide";

                PopUpManager.addPopUp(alert, this);

                PopUpManager.centerPopUp(alert);

                Alert.show("this Alert uses the default width");
            }
        ]]>
    </mx:Script>
</mx:WindowedApplication>

由于Flex应用程序在Flash播放器内运行,窗口无法显示在舞台之外。因此,使其工作的唯一方法是使您的应用程序更大。

你可以使用flex/ajax的桥接器,调用JavaScript警告框,它们不会受舞台限制。但是它不会像应用程序的其余部分一样被装饰,需要更多的工作才能被联接,特别是如果您在监听用户单击“确定”按钮。

我认为适用于Adobe Air的道场扩展应该能够做你想要的事情。我自己从未使用过它,也不确定会有什么牺牲,但值得一看。

将此翻译为中文:http://sitepen.com/labs/dair/ http://sitepen.com/labs/dair/





相关问题
热门标签