gpt4 book ai didi

apache-flex - 如何在Flex应用程序边界内保持拖动的TitleWindow

转载 作者:行者123 更新时间:2023-12-04 04:08:32 25 4
gpt4 key购买 nike

我在FB4中使用PopupManager来显示自定义对话框。

popw​​in =新的TitleWindow();
popw​​in.addElement(myCustomDialog);
PopUpManager.addPopUp(popwin,this,false);
PopUpManager.centerPopUp(popwin);

可以拖动弹出的TitleWindow,并在其灰色标题栏位于Flex应用程序矩形的边界之外时放开它,然后无法再次捕获弹出窗口。也可以将TitleWindow向下拖动,以使其在Flex应用矩形的底部边缘下方完全不可见。当Flex应用范围小于整个浏览器窗口且用户正在快速工作时,发生这种情况的机会就会增加。是否有一个简单的设置可以阻止这种情况发生,还是程序员必须在拖动操作期间拦截该行为?

谢谢
提姆

最佳答案

嘿,据我所知,没有一个简单的设置可以阻止这种情况的发生。您需要做的就是每次运动时观察它,并确保它保持在一定范围内。然后,您可以根据需要将该事件处理程序抽象为某些Controller类。

这是一个基本示例:

<?xml version="1.0" encoding="utf-8"?>
<s:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
creationComplete="creationCompleteHandler()">

<fx:Script>
<![CDATA[
import flash.geom.Rectangle;
import mx.core.FlexGlobals;
import mx.core.UIComponent;
import mx.events.MoveEvent;
import mx.managers.PopUpManager;
import spark.components.TitleWindow;

protected function creationCompleteHandler():void
{
var window:TitleWindow = new TitleWindow();
PopUpManager.addPopUp(window, this, false);
PopUpManager.centerPopUp(window);
window.addEventListener(MoveEvent.MOVE, window_moveHandler);
}

protected function window_moveHandler(event:MoveEvent):void
{
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);
}

]]>
</fx:Script>

</s:Application>

希望能有所帮助,

关于apache-flex - 如何在Flex应用程序边界内保持拖动的TitleWindow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2397848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com