AIR - установить размер NativeWindow для включения системного хрома
Как узнать размер системного хрома, чтобы я мог указать размер окна для достижения желаемого размера этапа?
Если мое главное окно установлено на 800 x 600 (этап), и я создаю второе окно, как показано ниже, оно будет меньше.
public function Main():void
{
var windowOptions:NativeWindowInitOptions = new NativeWindowInitOptions();
windowOptions.systemChrome = NativeWindowSystemChrome.STANDARD;
windowOptions.type = NativeWindowType.NORMAL;
var newWindow:NativeWindow = new NativeWindow( windowOptions );
newWindow.width = 800;
newWindow.height = 600;
newWindow.stage.scaleMode = StageScaleMode.NO_SCALE;
newWindow.stage.align = StageAlign.TOP_LEFT;
newWindow.activate();
}
Я полагаю, вы увеличиваете оба newWindow.width = 800;
а также newWindow.height = 600;
для учета хрома, но как вы найдете это значение?
3 ответа
Вы можете вычислить размер хрома, вычтя размер окон (включая хром) с внутренним размером (исключая хром).
Из справки по ширине NativeWindows:
Размеры, сообщаемые для собственного окна, включают в себя любой системный хром окна, который отображается. Ширина используемой области отображения внутри окна доступна из свойства Stage.stageWidth.
Таким образом, внутренний размер может быть получен с помощью объекта stage ( stage.stageWidth и stage.stageHeight:)
следовательно:
var chromeWidth=newWindow.width-newWindow.stage.stageWidth;
var chromeHeight=newWindow.height-newWindow.stage.stageHeight;
Для справки, как я чувствую, другие ответы недостаточно ясны. Чтобы установить в новом окне нужные размеры:
// first set the desired window dimensions to set the (smaller) stage dimensions:
newWindow.width = 1024;
newWindow.height = 768;
// then reset the window dimensions and add chrome dimensions:
newWindow.width = 1024 + (1024 - newWindow.stage.stageWidth);
newWindow.height = 768 + (768 - newWindow.stage.stageHeight);
При создании проектов ActionScript с NO_SCALE stage.stageHeight и stage.stageWidth не могут использоваться для вычисления хрома в главном окне приложения, так как они не меняют размеры, чтобы соответствовать внутренней ширине. Вы должны сослаться на главное окно этапа.
Чтобы найти высоту и ширину внутренней рабочей области главного окна, вы можете использовать stage.nativeWindow.stage, который ссылается на свойства stageHeight и stageWidth, которые дают внутреннюю ширину.
например, для желаемого внутреннего размера 1280x720:
// width stage.nativeWindow.width = 1280 + (stage.nativeWindow.width -
stage.nativeWindow.stage.stageWidth);
// height stage.nativeWindow.height = 720 + (stage.nativeWindow.height
- stage.nativeWindow.stage.stageHeight);