我有2个AIR应用程序(A
和B
),它们能够通过LocalConnection
对象进行通信。我已经证实,邮件确实正在被正确地发送/接收。如何管理外部应用程序中的窗口
我希望能够有A
告知B
来到前面。这两个应用程序是全屏:
stage.fullScreenSourceRect = new Rectangle(0, 0, 1080, 1920);
stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
我已经尝试了几种排列,但由于尚未似乎没有任何工作。
private function initSlave(channel: String): void {
conn = new LocalConnection();
conn.client = {
'activateSlave': activateSlave
};
conn.allowDomain("*");
conn.connect("_" + channel);
}
private function activateSlave(): void {
stage.nativeWindow.orderToFront();
// or
stage.nativeWindow.activate();
// or
stage.nativeWindow.alwaysInFront = true;
stage.nativeWindow.alwaysInFront = false;
}
如果我留在窗口模式(stage.displayState = StageDisplayState.NORMAL
)这两个应用程序,然后切换alwaysInFront
实际工作。拨打activate()
或orderToFront()
仍然无能为力。如果我尝试切换alwaysInFront
,然后将应用程序设置为全屏,应用程序将在我的窗口应用程序后面全屏显示。也许在将应用设置为全屏之前,我应该等待一个事件?
我发现一个线索提到orderToFront()
只能在同一个应用程序中相对于windows工作,这就解释了为什么它似乎没有做任何事情。
有没有人有任何见解把它拉掉?也许有一种方法可以将B
嵌入到应用程序A
中,因此它们实际上是相同的应用程序?我不确定如何使用AIR应用程序执行此操作,就像仅需加载SWF一样,因为需要外部资源。
如果两个应用程序都不是全屏幕,您是否可以重现相同的问题? – keyle 2012-02-06 22:57:56
我使用窗口化的应用程序进行了一些测试,从而更新了问题。 'activate()'在文档中明确表示它应该把窗口放在前面并获得焦点,但我看不到任何行为。 – 2012-02-06 23:07:18
orderToBack()是否工作?我在想某种停用的窗口问题。 – keyle 2012-02-07 02:45:00