1

AIRでNativeWindowを操作する場合、ウィンドウが最小化/最小化解除されるたびにイベントを取得できますか? 接続しようとしましDisplayStateChangedたが、ウィンドウが最小化されていると起動しません。そのようなイベントを取得する方法を知っていますか?

私は Windows 7、32 ビットを使用しており、AIR 3.5 を実行しています。

これは初期化コードです:

        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!");

        }
    }
4

4 に答える 4

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");
    }
}
于 2012-07-20T01:31:58.983 に答える
2

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

また、次の結果も知りたいです。

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

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

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

于 2012-01-01T21:09:32.100 に答える
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!")
        }
    }
于 2012-04-25T09:40:17.073 に答える
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();
}
于 2012-02-29T07:53:03.500 に答える