我使用的是 Mac OS X (Mavericks)。使用 Adobe AIR,我想在两个显示器(内置笔记本电脑视网膜显示器和外部 HDMI 显示器)上分别显示单独的全屏窗口。
我可以在主显示器上获得全屏窗口,在辅助显示器上获得几乎全屏的窗口。当我说“几乎”时,我的意思是窗口是全屏的,除了菜单栏所在的顶部空间(显示桌面的背景图像):
起初我以为这是 AIR 的问题,但我开始认为这可能是 OS X 的限制。如果我与主屏幕交互,一切正常。但是,如果我单击辅助屏幕,两个屏幕上都会出现菜单栏。就好像只有第一个屏幕真正处于“全屏模式”。似乎第二个被视为最大化的无镶边窗口。
你们知道发生了什么事吗?这是我正在使用的代码:
package {
import flash.display.NativeWindow;
import flash.display.NativeWindowInitOptions;
import flash.display.NativeWindowSystemChrome;
import flash.display.Screen;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageDisplayState;
import flash.display.StageScaleMode;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.TextFormatAlign;
public class TwoFullscreenNativeWindowsInTwoMonitors extends Sprite {
public var secondWindow:NativeWindow;
public function TwoFullscreenNativeWindowsInTwoMonitors() {
// Make primary (default) window's stage go fullscreen
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
stage.color = 0xC02A2A; // red
// Create fullscreen window on second monitor (check if available first)
if (Screen.screens[1]) {
// Window
var nwio:NativeWindowInitOptions = new NativeWindowInitOptions();
nwio.systemChrome = NativeWindowSystemChrome.NONE;
secondWindow = new NativeWindow(nwio);
secondWindow.bounds = (Screen.screens[1] as Screen).bounds;
secondWindow.activate();
// Stage
secondWindow.stage.align = StageAlign.TOP_LEFT;
secondWindow.stage.scaleMode = StageScaleMode.NO_SCALE;
secondWindow.stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
secondWindow.stage.color = 0x387D19; // green
}
}
}
}
UPDATE 1:
我设法通过使用一个丑陋的黑客来填充菜单栏空间......也就是说,等待一秒钟,然后重新设置窗口高度。然而,第二个窗口仍然没有“全屏”运行。如果我点击它,菜单栏就会出现...
通过勾选 OS X Mission Control 首选项窗格中的“显示器具有单独的空间”复选框,可以获得类似的结果
UPDATE 2:
看来这是一个自 2011 年起被 Adobe 熟知...
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)