Apache flex 如何在Flex中使面板可拖动
我给我的用户创建项目的能力。“创建项目”对话框,例如:Apache flex 如何在Flex中使面板可拖动,apache-flex,panel,Apache Flex,Panel,我给我的用户创建项目的能力。“创建项目”对话框,例如: <s:Panel id="postitNoteCreatePanel" horizontalCenter="0" verticalCenter="0" ... 您可以尝试: 将鼠标下键和鼠标上键eventlistner添加到面板的标题栏,并添加两个功能: private function handleDown(event:MouseEvent):void{
<s:Panel id="postitNoteCreatePanel"
horizontalCenter="0" verticalCenter="0"
...
您可以尝试:
将鼠标下键和鼠标上键eventlistner添加到面板的标题栏,并添加两个功能:
private function handleDown(event:MouseEvent):void{
this.startDrag();
}
private function handleUp(event:MouseEvent):void{
this.stopDrag();
}
“this”指的是面板中的“this”。您可以向面板添加事件侦听器,即在mousedown上,您可以使面板的startDrag属性为true;在mouseup上(在mousedown之后),您可以停止拖动面板
这是最简单的方法。虽然这意味着用户可以使用面板的任何部分拖动面板。我认为最简单的方法是用s:TitleWindow替换s:panel。TitleWindow蒙皮向标题栏添加了一个区域,允许对其进行拖动,TitleWindow类具有处理拖动的代码。这将允许拖动,而无需编写任何处理程序。希望能有所帮助。这里是可拖动(和可调整大小)flex面板的示例和代码,不过是旧SDK
代码可以帮助您。我在Flex4.5中使用此代码。它工作得很好
如果面板上有可单击的项目作为子项,您是否会使用“停止立即传播”来停止意外移动面板,即只有标题部分会触发移动?只有标题部分会被拖动,面板本身不会有任何影响。一个区别是TitleWindow始终位于应用程序的顶层,因此在切换状态(或视图)时它仍然存在。但是,可拖动面板可以保持在一种状态(或视图),并且在您返回该状态时仍然存在。
package components
{
import flash.events.MouseEvent;
import mx.managers.DragManager;
import spark.components.Group;
import spark.components.Panel;
/**
* A simple extension of the Spark Panel component
* that enables dragging.
*/
public class DraggablePanel extends Panel
{
//--------------------------------------
// Constructor
//--------------------------------------
public function DraggablePanel()
{
super();
}
//--------------------------------------
// Skin Parts
//--------------------------------------
/**
* The skin part that represents the title bar of the underlying Panel.
* NOTE: The default PanelSkin already has this, it's just not defined as a skinPart in the Panel class.
* We want it so that we can capture dragging.
*/
[SkinPart(required="true")]
public var topGroup:Group;
//--------------------------------------
// Overridden Methods
//--------------------------------------
protected override function partAdded( partName:String, instance:Object ) : void
{
super.partAdded( partName, instance );
if (instance == topGroup)
{
Group( instance ).addEventListener( MouseEvent.MOUSE_DOWN, topGroup_mouseDownHandler );
Group( instance ).addEventListener( MouseEvent.MOUSE_UP, topGroup_mouseUpHandler );
}
}
protected override function partRemoved( partName:String, instance:Object ) : void
{
super.partRemoved( partName, instance );
if (instance == topGroup)
{
Group( instance ).removeEventListener( MouseEvent.MOUSE_DOWN, topGroup_mouseDownHandler );
Group( instance ).removeEventListener( MouseEvent.MOUSE_UP, topGroup_mouseUpHandler );
}
}
//--------------------------------------
// Event Handlers
//--------------------------------------
protected function topGroup_mouseDownHandler( event:MouseEvent ):void
{
if ( !DragManager.isDragging )
startDrag();
}
protected function topGroup_mouseUpHandler( event:MouseEvent ):void
{
stopDrag();
}
}
}