Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flash Приложения: AIR, Zinc и тд. (http://www.flasher.ru/forum/forumdisplay.php?f=94)
-   -   AIR. Как получить ссылку на обьект NativeWindow главного окна (http://www.flasher.ru/forum/showthread.php?t=171554)

HardCoder 18.11.2011 17:01

AIR. Как получить ссылку на обьект NativeWindow главного окна
 
Здравствуйте. Мне нужно обратится из окна, например 3-й ступени вложенности, к самому главному родительскому окну приложения.
Пришла мысль использовать свойства owner.owner.owner... до тех пор пока owner не будет null (значит это главное окно). Но это уж слишком коряво. Подскажите другой способ.

джонатан 18.11.2011 17:10

Ну создайте ссылку например в классе документа

Код AS3:

private static var MainWindow:NativeWindow = stage.nativeWindow;

Вариантов масса

HardCoder 18.11.2011 17:13

Спасибо, это вариант! Но нет ли готовых решений? А то сколько не ищу по справке, не могу найти...

джонатан 18.11.2011 17:21

Не знаю, сам учусь. Попробуйте посмотреть что выдаёт listOwnedWindows

HardCoder 18.11.2011 17:30

Это не пойдет! listOwnedWindows содержит дочерние окна. Придется использовать предложенную Вами структуру
Код AS3:

public static var MainWindow:NativeWindow;
............................................................
Main.MainWindow = this.stage.nativeWindow;


Genzo 18.11.2011 17:31

может
Код AS3:

NativeApplication.nativeApplication.activeWindow

?

HardCoder 18.11.2011 17:33

Ну не знаю. В NativeApplication активным окном может быть одно из нескольких дочерних. :(

Genzo 18.11.2011 17:54

Щас копаться лень, ну если найти первичный stage , у него есть свойство nativeWindow. во флексе можно так :
Код AS3:

        FlexGlobals.topLevelApplication.stage.nativeWindow


redefy 07.02.2012 03:19

Собственно в тему.
Только изучаю AIR, столкнулся с одним не понятным мне моментом. Не могу понять в чем причина.

Я хочу сделать главное окно владельцем для всех остальных окон. Ну то есть чтобы если минимизировалось главное окно, то с ним минимизировались и все остальные.

Но. Если я делаю это не для главного окна, типа так
Код AS3:

package {
        import flash.desktop.NativeApplication;
        import flash.display.NativeWindow;
        import flash.display.NativeWindowInitOptions;
        import flash.display.NativeWindowRenderMode;
        import flash.display.NativeWindowSystemChrome;
        import flash.display.NativeWindowType;
 
        import flash.display.Sprite;
        import flash.display.StageAlign;
        import flash.display.StageScaleMode;
 
        /**
        * Работа с окнами в AIR
        * @author redefy
        */

        public class Main extends Sprite {
 
                public function Main():void {
                        stage.scaleMode = StageScaleMode.NO_SCALE;
                        stage.align = StageAlign.TOP_LEFT;
                        stage.color = 0x0;
 
                        var mainWindowsOption:NativeWindowInitOptions = new NativeWindowInitOptions();
                        //mainWindowsOption.owner = this.stage.nativeWindow;
 
                        var mainWindow:NativeWindow = new NativeWindow(mainWindowsOption);
                        mainWindow.stage.color = 0x1b1b1b;
                        mainWindow.width = 400;
                        mainWindow.height = 300;
                        mainWindow.stage.scaleMode = StageScaleMode.NO_SCALE;
                        mainWindow.stage.align = StageAlign.TOP_LEFT;
                        mainWindow.activate();
 
                        var windowsOption:NativeWindowInitOptions = new NativeWindowInitOptions();
                        windowsOption.owner = mainWindow;
                        windowsOption.type = NativeWindowType.UTILITY;
 
                        var window:NativeWindow = new NativeWindow(windowsOption);
                        window.stage.color = 0xcccccc;
                        window.width = 200;
                        window.height = 200;
                        window.activate();
 
                        trace(NativeApplication.nativeApplication.openedWindows);
                }
        }
}

То все ок. Если свернуть первое окно, то второе сворачивается так же. То есть как и должно быть.

Но если раскомментить строчку
Код AS3:

mainWindowsOption.owner = this.stage.nativeWindow;

, то есть сделать главное окно владельцем первого, то окна, кроме главного, вообще не показываются.

Хотя
Код AS3:

trace(NativeApplication.nativeApplication.openedWindows);

как и положенно возвращает ссылки на 3 окна.

Не могу понять где я затупил.

Добавлено через 17 часов 32 минуты
Неужели в Russian Federation никто не работает с AIR ?

Блин, такое ощущение что первопроходец я какой-то. Низачто не поверю что никто не сталкивался с этим моментом. Ладно я еще зеленый, но старожилы то форума неужели не облазили AIR вдоль и поперек?

Добавлено через 20 часов 58 минут
Проблема решена.
Всем спасибо за "помощь"...


Часовой пояс GMT +4, время: 03:57.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.