我有一个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;
}
我是否忘记导入某些内容或是否必须定义其他窗口才能执行此操作?
谢谢! 纳迪亚
答案 0 :(得分:0)
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