Можете ли вы получить свернутое событие NativeWindow? - PullRequest
1 голос
/ 31 декабря 2011

При работе с NativeWindow в AIR вы можете получать событие каждый раз, когда окно свернуто / не свернуто? Я попытался подключиться к 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 ]

2 голосов
/ 20 июля 2012

Следующее прекрасно работает в 64-разрядной версии Windows 7 с AIR 3.3 / Flash Player 11.3.

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");
    }
}
2 голосов
/ 02 января 2012

Действительно ли окно свернуто (отметьте window.minimizable, а не только настройку init)?

Я также хотел бы узнать результаты:

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

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

Я также хотел бы узнать результаты приведенного выше комментария "слабая ссылка".Это влияет на сборку мусора, поэтому всегда полезно проверять.

0 голосов
/ 25 апреля 2012

Я получаю события для минимизации / минимизации.Я создаю приложение 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!")
        }
    }
0 голосов
/ 29 февраля 2012

Самое близкое, что я мог получить к минимизированному событию, это события активации. Всякий раз, когда пользователь нажимает за пределами приложения, это окно деактивируется. Затем вы можете свернуть окно автоматически с помощью метода minimal (). Но деактивированное событие также вызывается, когда пользователь сворачивает окно / переключается на другое. И когда пользователь переключается обратно, вы получаете звонок для активации.

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();
}
...