首页 > 网站 > WEB开发 > 正文

10.5.启动和禁止拖操作

2024-04-27 13:52:10
字体:
来源:转载
供稿:网友
10.5.1. 问题
你想在运行时启动和禁止列表类控件的拖拽操作。
10.5.2. 解决办法
使用列表类控件的拖拽事件属性来管理属性值。
10.5.3 讨论
Flex 框架的列表类控件具有内置的管理器来与DragManager 互动,通过使用dragEnabled和dropEnabled 属性,提供了一个便捷的途径来启动控件响应拖拽动作。通过使用内建的事件属性dragStart, dragEnter,dragOver, dragExit, dragDrop 和dragComplete,你可以像在任何其它UIComponent 驱动的程序中一样设置事件处理器。

为了启动一个列表类控件接收拖拽动作,你可以设置该控件实例的dragEnabled 属性的布尔值。列表类控件具有单向或者双向的拖拽能力。在一个单向的体系中,该控件实例能够接受释放动作或者允许拽动。在双向体系中,该控件允许拽动和释放动作都执行。

通过指派DragManager 发出的拖拽事件的处理器,从而对程序中怎样处理事件和拖拽源数据进行管理。下面的例子为dragEnter 事件创建一个事件处理器,从而决定在两个List 控件中是否允许或禁止拖拽动作。
+展开
-XML
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxmllayout="horizontal"
creationComplete="creationHandler();">

<mx:Script>
<![CDATA[
import mx.events.DragEvent;
import mx.collections.ArrayCollection;
[Bindable]
public var isEnabled:Boolean = true ;
private static const DIS_LABEL:String = "disable drag and drop";
private static const EN_LABEL:String ="enable drag and drop";
private function creationHandler():void {
list1.dataProvider = new ArrayCollection(['Spider Monkey''Orangutan''Gorilla']);
list2.dataProvider = new ArrayCollection(['Lion''Cheetah''Puma'])}
private function clickHandler():void {
enableBtn.label = ( enableBtn.label == DIS_LABEL )? EN_LABEL: DIS_LABEL;
isEnabled = !isEnabled;
}
private function dragEnterHandler( evt:DragEvent ):void{
evt.target.dropEnabled = ( evt.target !=evt.dragInitiator );
}

]]>
</mx:Script>
<mx:VBox width="100%height="100%">
<mx:Button id="enableBtnlabel="disable drag and dropclick="clickHandler();" />
<mx:HBox width="100%height="100%">
<mx:List id="list1width="200height="200dragEnabled="{isEnabled}"
dragMoveEnabled="truedragEnter="dragEnterHandler(event);" />

<mx:List id="list2width="200height="200dragEnabled="{isEnabled}dragMoveEnabled="truedragEnter="dragEnterHandler(event);" />
</mx:HBox>
</mx:VBox>
</mx:Application>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表