加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex – 如何在外部应用程序中管理窗口

发布时间:2020-12-15 01:45:31 所属栏目:百科 来源:网络整理
导读:我有2个AIR应用程序(A和B),可以通过LocalConnection对象进行通信.我已经确认消息肯定是正确发送/接收的. 我希望能够让A告诉B来到前线.两个应用程序都是全屏: stage.fullScreenSourceRect = new Rectangle(0,1080,1920);stage.displayState = StageDisplaySt
我有2个AIR应用程序(A和B),可以通过LocalConnection对象进行通信.我已经确认消息肯定是正确发送/接收的.

我希望能够让A告诉B来到前线.两个应用程序都是全屏:

stage.fullScreenSourceRect = new Rectangle(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()仅相对于同一应用程序中的窗口工作,这解释了为什么它似乎没有做任何事情.

有没有人有任何见解拉这个?也许我有办法将B嵌入到应用程序A中,所以它们实际上是同一个应用程序?我不确定如何使用AIR应用程序执行此操作,就像只需加载SWF一样,因为需要外部资源.

解决方法

由于没有其他人提供解决方案,我只是快速提到我正在使用的黑客.基本上我有2个LocalConnection通道,一个从A到B,一个从B到A.
然后,可见程序(例如A)将淡入淡出,将可见设置为假,并向B发送消息以放弃控制. B已使用stage.nativeWindow.visible = false初始化自身,当它收到来自A的消息时,它将显示为全白屏幕并在GUI中淡入淡出.在将A设置为false以显示B时间之前有一个轻微的偏移,否则在两个窗口最小化时的短暂时刻会出现弹出.

无论如何,你去,它很丑,但它实际上运作得相当好.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读