【发布时间】:2011-02-03 21:09:24
【问题描述】:
所以我注意到 Windows 7 有一种令人不安的倾向,即阻止您将窗口的标题栏拖离屏幕顶部。如果您尝试 - 在这种情况下,使用在窗口底部具有可拖动区域的空中应用程序,允许您将窗口顶部向上推过屏幕 - 它只会将窗口向下踢得足够远,以至于标题栏位于它认为的“可见区域”的顶部。
一种解决方案是在应用程序窗口移动时调整其大小,以便标题栏始终位于窗口所需的位置。但是,在拖动窗口时如何调整窗口大小?你会这样吗?
dragHitArea.addEventListener(MouseEvent.MOUSE_DOWN, function(e:MouseEvent):void{
stage.nativeWindow.height += 50;
stage.nativeWindow.startMove();
stage.nativeWindow.height -= 50;
});
看看那里发生了什么?当我单击时,我正在执行startMove(),它连接到操作系统的用于拖动窗口的功能。我还将窗口的高度增加和减少了 50 像素 - 这应该不会给我带来净增加,对吧?
错误 - 第一个 '.height +=' 被执行,但 .startMove() 之后的 '.height -=' 从未运行。
为什么?
【问题讨论】:
-
update - 如果你好奇,我正在编写一个带有向右和向上扩展的弹出式菜单的空气小部件 - 因为这些元素只能显示在应用程序窗口本身的边界(即使窗口设置为无镶边和透明)我必须扩展应用程序的边界以包含菜单“弹出”到的区域。在极端情况下,小部件位于左下角,菜单完全扩展到屏幕的右侧和顶部边缘,应用程序区域可以很好地覆盖整个桌面。
-
问题是,当它像这样展开时,如果用户将它向上和向右拖动,它会导致应用程序窗口的“标题栏”区域移动到桌面的上边缘之上通常无法到达的区域;一旦
.startMove()操作完成,Windows 会自动将窗口重新定位到该边缘下方。所以我想做的是为了操作系统的利益不断调整应用程序的高度,以便窗口的标题栏永远不会超过桌面区域的顶部边界。 -
我想知道是否有人意识到正确答案很可能是“你不能”,如果他们提交它,他们会得到这个赏金吗?
标签: flash actionscript-3 air desktop-application