在我们的Flex AIR应用程序中,我们遇到的问题是我们的主应用程序窗口相当狭窄。这意味着两侧都会切换警报对话框,同时裁剪右键菜单。我们怎样才能让这些窗口不被我们的主窗口裁剪掉呢?
答案 0 :(得分:2)
将主AIR窗口变为隐形透明窗口,使应用程序的主要工作窗口成为隐形窗口的子窗口。然后,当AIR应用程序启动时,将不可见窗口设置为包含桌面的大小。然后,您可以在此桌面区域中放置任意数量的窗口和对话框,而不必担心它们会像现在一样被剪裁。
如果您想支持多个屏幕显示 - 这样您的可见应用程序窗口可能会从显示到显示,那么请将您的不可见窗口设置为整个图形坐标系统的大小,使其包含任何和所有显示屏幕。
使用隐形窗口方法后,您将能够实现与本机应用程序类似的窗口行为。
答案 1 :(得分: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>
答案 2 :(得分:0)
在Flash播放器内部运行Flex应用程序时,窗口无法在舞台外显示。因此,实现这项工作的唯一方法是让您的应用更大。
您可以使用flex / ajax桥接器并调用javascript警告框,但它们不受舞台约束。但它不会像应用程序的其余部分那样被剥离,并且需要更多的工作才能被吸引,特别是如果你正在倾听用户点击okay按钮...
答案 3 :(得分:0)
我相信adobe air的dojo扩展应该能够做到你想要的。从来没有自己使用它,也不确定会有什么样的折衷,但可能值得一看。