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

10.1.使用DragManager 类

2024-04-27 13:52:09
字体:
来源:转载
供稿:网友
10.1.1. 问题
你想在程序中从一个地方移动数据到另一个地方。
10.1.2. 解决方法
使用mx.manager.DragManager 类管理拖拽操作以及在释放目标上监听拖拽事件。
10.1.3. 讨论
DragManager 类用于管理在你的程序里执行的拖拽操作。当一个拖拽操作被初始化,拖拽源(drag source)通过静态方法doDrag 增加到DragManager。被称为释放目标(drop target)的组件了注册事件监听器,从而监听由DragManager 发出的事件。它们接受DragManager上可用的数据源。

数据源通过一个初始组件赋予DragManager,它们能够被移动或复制。一个拖拽操作的缺省处理过程是从一个地方移动数据到另一个地方国。但如有需要实现自己的复制过程,你可以使用DragManager 手动添加拖拽支持。

下面的例子让你在一个Canvas 容器里移动一个Box 组件。
+展开
-XML
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxmllayout="horizontal">
<mx:Script>
<![CDATA[
import mx.core.DragSource;
import mx.core.IUIComponent;
import mx.events.DragEvent;
import mx.managers.DragManager;
private static const FORMAT:String = "box";
private function mouseDownHandler(evt:MouseEvent ):void{
var initiator:IUIComponent = evt.currentTarget as IUIComponent;
var dragSource:DragSource = new DragSource();
dragSource.addData( initiator, FORMAT );
DragManager.doDrag( initiator, dragSource, evt );
}
private function dragEnterHandler( evt:DragEvent ):void {
if ( evt.dragSource.hasFormat( FORMAT ) ) {
DragManager.acceptDragDrop(Canvas(evt.currentTarget));
}
}
private function dropHandler( evt:DragEvent ):void {
var box:Box = Box( evt.dragInitiator );
box.x = evt.localX;
box.y = evt.localY;
}

]]>
</mx:Script>
<mx:Canvas id="canvasbackgroundColor="0xEEEEEEwidth="300height="300"
dragEnter="dragEnterHandler(event);dragDrop="dropHandler(event);">

<mx:Box id="dragItemwidth="20height="20backgroundColor="0x00FFCCmouseDown="mouseDownHandler(event);" />
</mx:Canvas>
</mx:Application>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表