2011-10-06 77 views
1

我有一个Adobe Air应用程序(AS3,而不是Flex),有2个窗口。当我点击离开他们到另一个桌面程序,我得到一个“停用”事件(如你所期望的)。空气本机窗口活动窗口更改

当我点击说窗口#1我得到一个“激活”事件(如你所期望的)。

但是当我从1号窗口到2号窗口时,我什么都没有。我相信这是因为Air应用程序仍然是活跃的程序,只是一个不同的窗口。

但是我有必要知道我什么时候从一个窗口走到另一个窗口。

我到目前为止提出的可怕的解决方案是有一个onEnterFrame并检查当前窗口是否为活动窗口。但我更愿意做这样一个更好的方式,这样的黑客攻击。

我已经去Stage,NativeApplicationNative Window事件,他们都没有做我所需要的。任何人都可以指向我可能忽略的另一个事件吗?

+0

我不知道,它似乎像侦听激活应该工作。你确定你是从正确的调度员那里听的吗?如果切换到另一个应用程序,然后返回到窗口2,窗口1是否触发激活事件? –

+0

是的,如果你从窗口#1到其他应用,然后窗口#1(或窗口#2)它触发一个激活。但是,如果你从窗口#1到窗口#2或窗口#2到窗口#1(例如,你永远不会离开空气应用程序),则不触发任何事件。 – WORMSS

+1

你在监听NativeWindow对象上的事件吗?如果我记得正确,窗口应该派遣他们自己的激活/停用事件,这些事件与应用程序激活/停用事件分开。 –

回答

1

直接在NativeWindow对象上侦听窗口激活事件。 (所有显示对象调度激活/停用事件,但这些都是由应用程序触发的 - 或者浏览器中的SWF对象 - 获得或失去操作系统焦点。)