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时间之前有一个轻微的偏移,否则在两个窗口最小化时的短暂时刻会出现弹出. 无论如何,你去,它很丑,但它实际上运作得相当好. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |