一、最简单的是直接调用ui组件的startDrag方法和stopDragging方法,这2个方法是flash中的所有继承于Sprite类的组件类都支持的。适用于在同一个容器中的拖拽。
思路是监听需要拖拽的组件的MOUSE_DOWN和MOUSE_UP事件,剩下来的有flash帮你自动完成。
例子
private static function init():void{
myVBox.addEventListener(MouseEvent.MOUSE_DOWN,startDragging);
myVBox.addEventListener(MouseEvent.MOUSE_UP, stopDragging);
}
// 按下鼠标按键时会调用此函数。
private static function startDragging(event:MouseEvent):void
{
event.currentTarget.startDrag();
}
// 松开鼠标按键时会调用此函数。
private static function stopDragging(event:MouseEvent):void
{
event.currentTarget.stopDrag();
}
二、借助DragManager实现拖拽。好处是可以方便的控制哪些容器支持被拖拽,也就是方便的订制拖拽的业务规则。适用于多个容器之间的拖拽。
假设把a组件从b容器拖拽到c容器
思路是对a监听鼠标MOUSE_DOWN事件,对c监听DRAG_ENTER和DRAG_DROP事件。其他的由flash完成。
例子
private function init():void
{
a.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
c.addEventListener(DragEvent.DRAG_ENTER,dragEnterHandler);
c.addEventListener(DragEvent.DRAG_DROP,dragDropHandler);
}
private static function mouseDownHandler(event:MouseEvent):void
{
var dragInitiator:UIComponent=UIComponent(event.currentTarget);
var ds:DragSource = new DragSource();
ds.addData(dragInitiator, "myRule");
DragManager.doDrag(dragInitiator, ds, event);
}
private static function dragEnterHandler(event:DragEvent):void {
if (event.dragSource.hasFormat("myRule "))
{
DragManager.acceptDragDrop(event.currentTarget);
}
}
private static function dragDropHandler(event:DragEvent):void {
var dragObject:UIComponent=UIComponent(event.dragInitiator);
dragObject.x = Container(event.currentTarget).mouseX;
dragObject.y =Container(event.currentTarget).mouseY;
if(dragObject.parent!=event.currentTarget){
Container(event.currentTarget).addChild(dragObject);
}
}
以上的例子中,c只接受带有“myRule”格式文字的拖动对象
三、完全自己实现拖拽功能。拖拽无非是ui组件跟着鼠标移动。所以需要监听推拽逐渐的MOUSE_DOWN,MOUSE_UP,MOUSE_MOVE事件,有时拖拽的目标容器也要监听MOUSE_UP事件。然后在MOUSE_MOVE事件的监听函数中改变ui组件的x和y值。相对前两种方法,这种方法实现起来就比较烦琐。具体事件这里就不写了.
总之,在flash的拖拽实现要比在js中容易一些。
分享到:
相关推荐
### Flex UI组件使用全集详解 #### 概述 本文档是基于阿树对Adobe Flex UI组件库的全面整理,并结合Adobe主页上提供的各种组件代码示例进行深度解析。Flex是一种用于构建高度交互式的Web应用的框架,尤其适用于创建...
本教程将详细介绍如何在Flex 4.5中实现Tree组件与任意组件之间的拖放操作,特别是将树形结构的数据拖拽到DataGrid中,并获取目标位置的全部数据进行添加。 1. **Flex 4.5的DragManager和DropTarget** Flex 4.5中的...
在这个场景中,我们关注的是Flex实现的拖拽控件,这是一种交互式UI元素,允许用户通过鼠标操作移动元素,提供了丰富的用户体验。 拖拽功能在Flex中可以通过使用内置的DragManager类和Event类来实现。DragManager类...
在AS3.0中,Adobe Flex框架提供了强大的UI组件库,如MX和Spark组件集,它们已经封装了丰富的用户界面元素。但是,如果需要特定的功能或者更符合项目需求的组件,开发者可以基于这些基础组件进行二次封装,创建自己的...
1. 拖动源组件:拖动操作的起点,通常是一个可交互的UI组件,如`List`、`Button`等。要启用拖放功能,需要在组件上监听`mouseDown`事件,并调用`DragManager.doDrag()`方法启动拖动。 2. 拖动图像:在拖动过程中...
2. 拖拽功能:在Flex中实现拖放功能通常涉及到DragManager、DragSource和DropTarget这三个主要对象。DragManager管理整个应用程序的拖放行为,DragSource定义了可被拖动的数据源,而DropTarget定义了接收拖动数据的...
1. **Flex框架**:Flex是基于Flash Player或Adobe AIR运行时的开发平台,它提供了一系列的UI组件、数据绑定和事件处理机制,帮助开发者快速构建用户界面。 2. **ActionScript**:Flex的主要编程语言,是一种面向...
标题中的“flex自定义组件介绍”指的是在Adobe Flex框架中创建和使用自定义组件的过程。Flex是一个基于ActionScript和MXML的开源框架,用于构建富互联网应用程序(RIA)。自定义组件允许开发者根据特定需求扩展Flex...
1. **组件与控件**:在Flex中,组件(Component)是UI的基本构建块,它们可以独立工作并包含其他组件。控件(Control)是一种特殊的组件,通常具有特定的功能,如按钮、文本框等。在这个项目中,创建的特效控件就是...
在Flex开发中,我们经常会...通过自定义和扩展,我们可以使Flex的UI组件适应各种设计需求,从而创建出更符合用户习惯的交互界面。这个案例展示了Flex的灵活性和可定制性,对于开发者来说是一个很好的学习和实践机会。
`DragManager`是系统级别的服务,负责管理整个应用的拖放操作,而`DragInitiator`通常是一个可拖动的UI组件,如Button、Canvas等。 1. **DragManager**: - `startDrag()`方法:这是启动拖放操作的关键,通常在...
在Flex编程领域,ObjectHandles是一个非常实用的组件,尤其对于新手开发者来说,它提供了一种简单易用的方式来实现拖拽和伸缩功能。这个组件能够帮助用户交互地调整对象的位置和大小,使得UI设计变得更加灵活和动态...
可以自定义扩充组件及编辑器表现,甚至用你自己写的组件(flash及flex都不够灵活) 3.并自动生成UI代码,自动打包资源 4.同时支持位图及矢量图组件 5.强大的编辑功能,支持拖拽,图层,多层嵌套,恢复,对齐,...
在Flex中,Tree组件是用于显示层次结构数据的控件,而"flex带复选框的tree"(Flex CheckboxTree)则是对Tree组件的一种扩展,增加了复选框功能,用户可以对树形结构的节点进行选择或全选操作,常用于权限管理、配置...
首先,Flex中的Spark组件库为我们提供了基础的UI组件,如Button、Label等,同时也包含了对拖放(drag-and-drop)功能的支持。在我们的网络拓扑图实例中,我们主要利用Spark组件的拖放API来实现节点的拖拽功能。拖放...
本文将详细介绍如何在Flex中实现这些控件的拖拽功能,并探讨其实现原理及应用示例。 #### 一、Flex拖拽技术概述 Flex的拖拽功能主要由`DragManager`类进行管理。这个类提供了一系列事件和属性来控制拖拽行为。例如...
在Flex中实现这样的效果,我们需要涉及到以下几个关键知识点: 1. **Flex组件库**:Flex提供了丰富的组件库,如Button、Label、Canvas等,我们可以利用这些组件构建用户界面。在这个案例中,我们可能需要用到一个可...
Flex提供了一个组件模型,包括各种UI组件如Panel和Window,以及事件处理和数据绑定机制。 2. Panel组件:Panel是Flex中的一个容器组件,可以用来展示和组织其他组件。Panel具有可定制的标题、边框和背景,通常用于...
本文将详细介绍如何在Flex中实现一个具有拖动连线、右键功能的流程图。我们将从以下几个关键知识点展开: 1. **Flex基础**:Flex是Adobe开发的一种基于ActionScript的开源框架,主要用于构建富互联网应用程序(RIA...
5. **自定义组件**:Flex允许开发者创建自定义组件,将翻书功能封装为一个独立的UI组件。这样,可以方便地在其他项目中复用此组件。 6. **Flex Builder**:作为开发工具,Flex Builder提供了强大的图形化界面和调试...