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);
Другие вопросы по тегам