我正在嘗試做一些非常相似的事情。在AIR應用程序中,我有一個大型的全屏窗口,它基本上是「桌面」。我總是希望這個窗口留在我的應用程序的所有其他窗口後面。但是,「桌面」窗口中有一些項目需要點擊。
似乎沒有乾淨的方法來強制窗口在窗口順序中保持其位置。
什麼我迄今,這是不完美的解決,是讓我的應用程序的所有其他窗口都使用alwaysOnTop財產,但綁定這一個全局變量(啊),我保持跟蹤整體應用程序級別活動/不活動狀態。這樣,當我切換到另一個應用程序時,我的窗戶不會漂浮在所有其他應用程序窗口之上 - 它們會像預期的那樣正常移動。
然後,我有一個完全透明的常規(alwaysOnTop = false)窗口,作爲桌面窗口的「疊加」,我可以放置各種交互式控件。這個窗口是可以挺身而出的,因爲它是透明的和我的其他窗口總是在頂部。
最後,重要的是,我上安裝「桌面」窗口中有三個事件偵聽器,如下所示:
protected function onApplicationComplete(event:Event):void
{
this.addEventListener(MouseEvent.MOUSE_DOWN, onClickHandler, true,1000,true);
this.addEventListener(MouseEvent.CLICK, onClickHandler, true,1000,true);
this.nativeWindow.addEventListener(Event.ACTIVATE, onActivateWindow,false,-1);
}
protected function onActivateWindow(event:Event):void
{
trace("sent via activate to back");
orderInBackOf(bigTransparentWindow);
}
protected function onClickHandler(event:MouseEvent):void
{
trace("sent via click to back");
orderInBackOf(bigTransparentWindow);
}
我不是這一切完全是高興,因爲仍然有物體在一些偶爾明顯的閃爍覆蓋窗口 - 看起來「桌面」窗口在其前面被排序,發生某種更新,然後再次被強制排除。
歡迎任何更好的解決方案!
Thx,不幸的是,在我的情況下沒有工作。我的猜測是,在您的應用程序中,您使用的是alwaysInFront並取消了停用,因此它永遠不會關閉,或者您只需要一個窗口在主窗口最小化時保持打開狀態。看來問題是,如果我不使用alwaysInFront選項,那麼當空氣改變焦點到主窗口時,它會將它放在最前面,我找不到預防它的方法。 – eglasius 2009-07-06 17:55:08