你能获取NativeWindow最小化事件吗?

发布于 2024-12-24 18:06:37 字数 1158 浏览 5 评论 0原文

在 AIR 中使用 NativeWindow 时,每次窗口最小化/取消最小化时是否都能收到事件?我尝试连接 DisplayStateChanged 但当窗口最小化时它不会触发。你知道如何获得这样的事件吗?

我使用的是 32 位 Windows 7,并且运行的是 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!");

        }
    }

When working with NativeWindow's in AIR, can you get an event everytime the window is minimized / unminimized? I tried hooking up with DisplayStateChanged but its not firing when the window is minimized. Do you know how to get such an event?

I'm on Windows 7, 32-bit, and I'm running AIR 3.5.

This is the init code:

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

And this is the handler:

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

        }
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

情归归情 2024-12-31 18:06:37

以下内容在使用 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");
    }
}

the following works fine on Windows 7 64-bit with 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");
    }
}
谜兔 2024-12-31 18:06:37

窗口实际上是否可以最小化(检查window.minimizing,而不仅仅是init设置)?

我还想知道以下结果:

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

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

我还想知道上面“弱引用”评论的结果。这会影响垃圾收集,因此测试总是一件好事。

Is the window actually minimizable (check window.minimizable, not just the init setting)?

I would also like to know the results of:

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

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

I would also want to know the results of the 'weak reference' comment above. This affects garbage collection, so is always a good thing to test.

无所的.畏惧 2024-12-31 18:06:37

我能得到的最接近最小化事件的是激活事件。每当用户在应用程序外部单击时,该窗口就会停用。然后,您可以使用最小化()自动最小化窗口。但是,当用户最小化窗口/切换到另一个窗口时,也会调用 deactivated 事件。当用户切换回来时,您会接到激活电话。

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

The closest thing I could get to a minimized event was the activate events. Whenever the user clicks outside the app, that window gets deactivated. You can then minimize the window automatically using minimize(). But the deactivated event is also called when the user minimizes the window / switches to another. And when the user switches back you get a call to activate.

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();
}
遥远的绿洲 2024-12-31 18:06:37

我收到最小化/取消最小化的事件。我正在构建一个 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!")
        }
    }

I'm getting events for minimize / unminimize. I'm building an AIR 3.5 app.

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!")
        }
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文