Как общаться между двумя NativeWindows in Air - PullRequest
2 голосов
/ 30 июня 2010

Как я могу отправлять сообщения или управлять содержимым экземпляра NativeWindow из родительского окна, в котором он был создан?

Я прочитал несколько мест, в которых для связи между экземплярами NativeWindow в одном и том же приложении вам необходимо «поддерживать LocalConnection или писать целый код JavaScript».Так получилось, что у меня нет проблем с написанием целой версии JavaScript, но, похоже, нет документации о том, как это сделать.Кто-нибудь знает, что делать?

Спасибо за любую помощь, вы можете мне помочь!

1 Ответ

1 голос
/ 30 июня 2010

Отвечая на мой собственный вопрос здесь.«Целый удар по JavaScript» можно описать одной нелепой строкой:

var myWindow = air.NativeApplication.nativeApplication.openedWindows[intWindowCount].stage.getChildAt(0).window

myWindow.document.getElementById('status').innerHTML = "success";

Это предполагает, что вы используете NativeWindow и загружаете HTML в HTMLLoader и загружаете только одного дочернего элемента.intWindowCount представляет количество открытых окон (включая Introspector).0 представляет количество детей, которые вы создали, используя метод stage.addChild().Код, который я использую, приведен ниже полностью.Вероятно, есть некоторая очистка, но она должна стать хорошей отправной точкой для тех, кто должен сделать то же самое:

    var htmlView = new air.HTMLLoader(); 
    htmlView.width = 300; 
    htmlView.height = 500; 

    var objWindowOptions = new air.NativeWindowInitOptions();
    objWindowOptions.transparent = false;
    objWindowOptions.systemChrome = air.NativeWindowSystemChrome.STANDARD;
    objWindowOptions.type= air.NativeWindowType.NORMAL;

    var wWindow = new air.NativeWindow(objWindowOptions);
    wWindow.x = objScreen.x;
    wWindow.y = objScreen.y;
    wWindow.width = objScreen.width;
    wWindow.height = objScreen.height;
    wWindow.activate();

    wWindow.stage.align = "TL"; 
    wWindow.stage.displayState = runtime.flash.display.StageDisplayState.FULL_SCREEN_INTERACTIVE;
    wWindow.stage.scaleMode = "noScale"; 
    wWindow.stage.addChild( htmlView ); 
    htmlView.load( new air.URLRequest("pageTwo.html") );


    setTimeout(function(){
        objScreen.setWindowReference(air.NativeApplication.nativeApplication.openedWindows[intWindowCount].stage.getChildAt(0).window);
        objScreen.setClock(cClock);
        cClock.screen = objScreen;
    },500);

Тайм-аут в конце - ужасный, неловкий взлом.Я использую его только потому, что не нашел подходящего события для использования с addEventListener().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...