2011-12-31 5 views
1

AIRでNativeWindowの作業を行っているときに、ウィンドウが最小化/最小化されるたびにイベントを取得できますか?私はDisplayStateChangedと接続しようとしましたが、ウィンドウが最小化されても起動しません。あなたはそのような出来事を得る方法を知っていますか?NativeWindow最小化イベントを取得できますか?

私はWindows 7,32ビット版で、AIR 3.5を実行しています。

これは、initコードです:

 var init:NativeWindowInitOptions = new NativeWindowInitOptions(); 
     init.maximizable = true; 
     init.resizable = true; 
     init.type = NativeWindowType.NORMAL; 
     init.minimizable = true; 
     window = new NativeWindow(init); 
     window.alwaysInFront = true; 
     window.addEventListener(NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGE, dispChange, false, 0, true); 

そして、これはハンドラである:

private function dispChange(e:NativeWindowDisplayStateEvent):void { 


     // if minimized/un-minimized 
     if (e.beforeDisplayState == NativeWindowDisplayState.NORMAL && e.afterDisplayState == NativeWindowDisplayState.MINIMIZED) { 
      trace("MINIMIZED!"); 

     }else if (e.beforeDisplayState == NativeWindowDisplayState.MINIMIZED && e.afterDisplayState == NativeWindowDisplayState.NORMAL) { 
      trace("Un-MINIMIZED!"); 

     } 
    } 
+0

(OSなどのように)いくつかのコードを表示し、環境を記述する必要があります。 – Yahia

+0

コードを表示してください... – Yahia

+0

コードを表示します。それはあなたのために働きますか? –

答えて

0

最小化されたイベントに最も近いのは、アクティブ化イベントです。ユーザーがアプリの外をクリックするたびに、そのウィンドウは無効になります。次に、minimize()を使用してウィンドウを自動的に最小化することができます。しかし、非アクティブ化されたイベントは、ユーザがウィンドウ/スイッチを別のウィンドウに最小化するときにも呼び出されます。ユーザーがスイッチバックすると、アクティブにするための電話がかかります。

window.addEventListener(Event.ACTIVATE, dispActive, false, 0, true); 
window.addEventListener(Event.DEACTIVATE, dispDective, false, 0, true); 

private function dispActive(e:Event):void { 
    // un-minimized 
} 
private function dispDective(e:Event):void { 
    // deactivated .. minimize again to be sure 
    window.minimize(); 
} 
+0

弱いリスナーを削除しようとしましたか? – TheDarkIn1978

2

が実際に最小化可能ウィンドウ(window.minimizableだけではなく、init設定をチェックし)ますか?

私はまたの結果を知っていただきたいと思います:

if (e.beforeDisplayState == NativeWindowDisplayState.MINIMIZED) trace("min before"); 

if (e.afterDisplayState == NativeWindowDisplayState.MINIMIZED) trace("min after"); 

私も上記の「弱参照」はコメントの結果を知りたいでしょう。これはガベージコレクションに影響するため、テストするのは常に良いことです。

0

最小化/最小化のイベントが発生しています。私はAIR 3.5アプリケーションを構築しています。

window = stage.nativeWindow; 
window.addEventListener(NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGE, dispChange, false, 0, true); 

function dispChange(e:Event):void { 
     minimized = (window.displayState == "minimized"); 
     if (minimized) { 
      trace("minimized!") 
     }else { 
      trace("UN-minimized!") 
     } 
    } 
2

AIR 3.3/Flash Player 11.3のWindows 7 64ビット版では、次の動作が問題ありません。

import flash.display.NativeWindowDisplayState; 
import flash.events.NativeWindowDisplayStateEvent; 

~ 

stage.nativeWindow.addEventListener(NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGE, displayStateChangeEventHandler); 

~ 

private function displayStateChangeEventHandler(event:NativeWindowDisplayStateEvent):void 
{ 
    switch (stage.nativeWindow.displayState) 
    { 
     case NativeWindowDisplayState.MINIMIZED: trace("window was minimized"); 
                break; 

     case NativeWindowDisplayState.NORMAL:  trace("window is normal"); 
    } 
} 
関連する問題