AIR - установить размер NativeWindow для включения системного хрома - PullRequest
5 голосов
/ 19 января 2012

Как узнать размер системного хрома, чтобы я мог указать размер окна для достижения желаемого размера сцены?

Если мое главное окно установлено на 800 x 600 (stage), и я создаю второе окно, как показано ниже, оно будет меньше.

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 ]

4 голосов
/ 19 января 2012

Вы можете рассчитать размер хрома, вычтя размер окон (включая хром) с внутренним размером (исключая хром).

Из справки width NativeWindows:

Размеры, сообщаемые для собственного окна, включают любой отображаемый системный хром окна.Ширина используемой области отображения внутри окна доступна из свойства Stage.stageWidth.

Таким образом, внутренний размер можно получить с помощью объекта stage (stage.stageWidth и stage.stageHeight:)

отсюда:

var chromeWidth=newWindow.width-newWindow.stage.stageWidth;
var chromeHeight=newWindow.height-newWindow.stage.stageHeight;
0 голосов
/ 06 мая 2015

Для справки, как мне кажется, другие ответы недостаточно ясны. Чтобы установить в новом окне нужные размеры:

// 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);   
0 голосов
/ 20 сентября 2012

При создании проектов 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);
...