您的位置:首页 > 其它

FLEX学习笔记:对拖动行为的深入认识——DragManager, dragInitiator, dragSource 这三个东西究竟是个什么玩意

2011-08-12 15:13 465 查看
 开始拖拽对象,doDrag方法初始化拖拽动作中的所有数据:

DragManager.doDrag(

  dragInitiator:派发拖拽事件的目标对象
  dragSource:拖拽中的数据源,用来传递数据。通过定义DragSource对象来设置数据源,该对象的方法 addData(obj, "name") 可以添加数据。然后使用dataForFormat("name") 来获取数据,使用前用hasFormat("name)
来判断是否存在该对象。
  mouseEvent:鼠标事件对象,包含了拖拽事件开始时的鼠标信息
  dragImage:可选,一个可视化的Flex 组件,用来代替目标对象的显示,将在拖拽过程中一直跟随鼠标。如果没有指定,默认会使用一个矩形来代替。
  xOffset:x坐标位移量,默认0,表示dragImage 和 目标对象左端的距离

  yOffset:y坐标位移量,默认0,表示dragImage 和 目标对象顶端的距离

  imageAlpha:默认0.5,表示 dragImage 的透明度,0-1

  allowMove:是否允许移动,默认true,实际上这个属性不影响动作

);

来详解一下各个参数的作用:

dragInitiator:启动对象,看dragEnabled 的对象,比如 <mx:TileList id="icons" dragStart="onDragStart(event)" dragEnabled="true" doubleClickEnabled="true" mouseDown="flowIconMouseDownHandler(event)"
> 这样 dragInitiator 就是整个 TileList, 很多元素天生就可以被拖动,我也不知道为什么,比如Button。如果是Button触发的拖动就是 dragInitiator 就是 Button 按钮本身

dragSource:可以往里面塞需要的参数,这样拖动的目标容器就可以处理了!

  dragImage:拖动的图片,一般用以下方式创建:

    var dragImg:Image = new Image();

    dragImg.source = TileList(event.dragInitiator).selectedItem.icon;

    dragImg.x = event.localX;

    dragImg.y = event.localY;

只需要一个实现 IFlexDisplayObject 接口的物件便可,注意到:所有 UIComponent 都实现了这个接口
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  flex button image icons