Adobe AIR带来了前沿

时间:2014-01-24 11:29:24

标签: actionscript-3 air

我有一个adobe AIR应用程序。当我从网页发送一些带有本地连接的数据时,我希望应用程序位于浏览器和所有其他窗口之前。

我尝试使用activate()和orderToFront(),但我没有结果。

唯一有效的脚本是:

window.alwaysInFront = TRUE;

window.alwaysInFront = FALSE;

但这并未将重点放在应用上。因此,当我单击浏览器上的按钮时,我将应用程序放在顶部,但如果我点击浏览器,应用程序将保持在顶部,直到我点击它(给它焦点),然后再次点击浏览器窗口。它工作正常如果我点击浏览器顶部栏。 我认为activate()可以解决问题,将焦点放在应用程序上,但不起作用。

这是代码(我使用本机窗口来调整大小,最小化和最大化窗口)。我从本地连接调用的函数是“primopiano”

import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.display.MovieClip;

import flash.display.NativeWindow;

var window = stage.nativeWindow;

function trascina (event:MouseEvent) {
    window.startMove();
}
...

function primoPiano (event) {
    trace("porto in primo piano...");
    //window.activate(); // doesn't work
    //window.orderToFront(); // doesn't work

    window.alwaysInFront=true;
    window.alwaysInFront=false;
}

我是否忘记导入某些内容或是否必须定义其他窗口才能执行此操作?

谢谢! 纳迪亚

1 个答案:

答案 0 :(得分:0)

查看DocumentationAPI Reference

AIR提供了几种直接更改窗口显示顺序的方法。您可以将窗口移动到显示顺序的前面或后面;您可以将窗口移动到另一个窗口上方或其后面。同时,用户可以通过激活它们来重新排序窗口。

您可以通过将 alwaysInFront 属性设置为 true ,将窗口保留在其他窗口前面。如果有多个窗口具有此设置,则这些窗口的显示顺序将相互排序,但它们始终排在 alwaysInFront 设置为false的窗口上方。即使AIR应用程序未处于活动状态,最顶层组中的Windows也会显示在其他应用程序的窗口上方。由于此行为可能会对用户造成干扰,因此只应在必要且适当时将 alwaysInFront 设置为 true 。合理用途的例子包括:

  • 用于控件的临时弹出窗口,例如工具提示,弹出列表,自定义菜单或组合框。因为这些窗口在失去焦点时应该关闭,所以可以避免阻止用户查看另一个窗口的麻烦。
  • 非常紧急的错误消息和警报。如果用户没有及时响应可能发生不可撤销的更改,则将警报窗口推到最前端可能是合理的。但是,大多数错误和警报都可以按正常窗口显示顺序处理。
  • 短暂的吐司式窗户。

注意:AIR未强制正确使用 alwaysInFront 属性。但是,如果您的应用程序中断了用户的工作流程,则可能会将其托付给该用户的垃圾桶。

我试过了:

window.alwaysInFront = true;
window.alwaysInFront = false;
window.activate();

您还可以尝试在窗口舞台上引用显示对象:

displayObject.stage.nativeWindow.alwaysInFront=true; 
//(where displayObject is your instance name)

工作正常。我正在使用Adobe AIR 4