2010-06-30 7 views
2

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

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

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

ответ

1

Отвечая на мой собственный вопрос здесь. «Целый сильный удар по 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().

Смежные вопросы