我有一个奇怪的问题 - 我使用标题窗口为用户创建一条消息。用户可以在屏幕上移动标题窗口,以便可以看到主屏幕。
但是,如果用户要过多地移动标题窗口,它实际上可以移出浏览器可访问区域 - 用户别无选择,只能关闭浏览器并重新开始。我们如何确保标题窗口的移动受到限制,以便标题栏始终可用于控制?
我可能没有措辞这个权利 - 请检查附加图像。
答案 0 :(得分:4)
我会收听TitleWindow的move事件。如果窗口移出应用程序的可见坐标,请将其移回。
如果您只是问题是允许用户关闭窗口,那么除了顶部的“x”之外,您还可以在窗口底部添加“关闭”按钮。
答案 1 :(得分:4)
如果您可以使用自定义组件,我建议您覆盖TitleWindow的move()方法。我正在使用以下代码来限制窗口移动:
public class PopUpWindow extends TitleWindow
{
private static const MIN_VISIBLE:int = 50;
public override function move(x:Number, y:Number):void
{
var maxX:Number = stage.stageWidth - MIN_VISIBLE;
var maxY:Number = stage.stageHeight - MIN_VISIBLE;
if (x < 0)
x = 0;
else if (x > maxX)
x = maxX;
if (y < 0)
y = 0;
else if (y > maxY)
y = maxY;
super.move(x, y);
}
}
答案 2 :(得分:1)
在titlewindow的移动事件中调用此函数:
protected function titlewindow1_moveHandler(event:MoveEvent):void
{
// TODO Auto-generated method stub
var window:UIComponent = event.currentTarget as UIComponent;
var application:UIComponent = FlexGlobals.topLevelApplication as UIComponent;
var bounds:Rectangle = new Rectangle(0, 0, application.width, application.height);
var windowBounds:Rectangle = window.getBounds(application);
var x:Number;
var y:Number;
if (windowBounds.left <= bounds.left)
x = bounds.left;
else if (windowBounds.right >= bounds.right)
x = bounds.right - window.width;
else
x = window.x;
if (windowBounds.top <= bounds.top)
y = bounds.top;
else if (windowBounds.bottom >= bounds.bottom)
y = bounds.bottom - window.height;
else
y = window.y;
window.move(x, y);
}