我在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
}
}
}
}
更新1 :
我设法通过使用丑陋的黑客来填充菜单栏空间......也就是说,等待一秒然后重新设置窗口高度。但是,第二个窗口仍然不是“全屏”。如果我点击它,菜单栏会出现......
通过勾选OS X Mission Control偏好设置面板中的“显示具有单独的空格”复选框,可以获得类似的结果
更新2 :
自2011年以来,这似乎是Adobe已知的long standing bug ...