`
fireflylover
  • 浏览: 110946 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
社区版块
存档分类
最新评论

Flex中UI组件拖拽的三种实现

    博客分类:
  • FLEX
阅读更多

一、最简单的是直接调用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组件使用全集

    ### Flex UI组件使用全集详解 #### 概述 本文档是基于阿树对Adobe Flex UI组件库的全面整理,并结合Adobe主页上提供的各种组件代码示例进行深度解析。Flex是一种用于构建高度交互式的Web应用的框架,尤其适用于创建...

    Flex 4.5 实现tree拖拽到任意组建

    本教程将详细介绍如何在Flex 4.5中实现Tree组件与任意组件之间的拖放操作,特别是将树形结构的数据拖拽到DataGrid中,并获取目标位置的全部数据进行添加。 1. **Flex 4.5的DragManager和DropTarget** Flex 4.5中的...

    flex实现的拖拽控件

    在这个场景中,我们关注的是Flex实现的拖拽控件,这是一种交互式UI元素,允许用户通过鼠标操作移动元素,提供了丰富的用户体验。 拖拽功能在Flex中可以通过使用内置的DragManager类和Event类来实现。DragManager类...

    UI组件封装as3.0

    在AS3.0中,Adobe Flex框架提供了强大的UI组件库,如MX和Spark组件集,它们已经封装了丰富的用户界面元素。但是,如果需要特定的功能或者更符合项目需求的组件,开发者可以基于这些基础组件进行二次封装,创建自己的...

    Flex拖拽库flex拖拽库

    1. 拖动源组件:拖动操作的起点,通常是一个可交互的UI组件,如`List`、`Button`等。要启用拖放功能,需要在组件上监听`mouseDown`事件,并调用`DragManager.doDrag()`方法启动拖动。 2. 拖动图像:在拖动过程中...

    flex 拖拽框架和图表服务的实现

    2. 拖拽功能:在Flex中实现拖放功能通常涉及到DragManager、DragSource和DropTarget这三个主要对象。DragManager管理整个应用程序的拖放行为,DragSource定义了可被拖动的数据源,而DropTarget定义了接收拖动数据的...

    flex翻书组件

    1. **Flex框架**:Flex是基于Flash Player或Adobe AIR运行时的开发平台,它提供了一系列的UI组件、数据绑定和事件处理机制,帮助开发者快速构建用户界面。 2. **ActionScript**:Flex的主要编程语言,是一种面向...

    flex自定义组件介绍

    标题中的“flex自定义组件介绍”指的是在Adobe Flex框架中创建和使用自定义组件的过程。Flex是一个基于ActionScript和MXML的开源框架,用于构建富互联网应用程序(RIA)。自定义组件允许开发者根据特定需求扩展Flex...

    Flex 图片旋转 缩放 拖动 特效

    1. **组件与控件**:在Flex中,组件(Component)是UI的基本构建块,它们可以独立工作并包含其他组件。控件(Control)是一种特殊的组件,通常具有特定的功能,如按钮、文本框等。在这个项目中,创建的特效控件就是...

    flex 竖排Menu

    在Flex开发中,我们经常会...通过自定义和扩展,我们可以使Flex的UI组件适应各种设计需求,从而创建出更符合用户习惯的交互界面。这个案例展示了Flex的灵活性和可定制性,对于开发者来说是一个很好的学习和实践机会。

    Flex拖拽控件效果

    `DragManager`是系统级别的服务,负责管理整个应用的拖放操作,而`DragInitiator`通常是一个可拖动的UI组件,如Button、Canvas等。 1. **DragManager**: - `startDrag()`方法:这是启动拖放操作的关键,通常在...

    flex objecthandles一个很不错的拖拽伸缩控件

    在Flex编程领域,ObjectHandles是一个非常实用的组件,尤其对于新手开发者来说,它提供了一种简单易用的方式来实现拖拽和伸缩功能。这个组件能够帮助用户交互地调整对象的位置和大小,使得UI设计变得更加灵活和动态...

    mornUI使用教程

    可以自定义扩充组件及编辑器表现,甚至用你自己写的组件(flash及flex都不够灵活) 3.并自动生成UI代码,自动打包资源 4.同时支持位图及矢量图组件 5.强大的编辑功能,支持拖拽,图层,多层嵌套,恢复,对齐,...

    flex带复选框的tree,flex checkboxtree

    在Flex中,Tree组件是用于显示层次结构数据的控件,而"flex带复选框的tree"(Flex CheckboxTree)则是对Tree组件的一种扩展,增加了复选框功能,用户可以对树形结构的节点进行选择或全选操作,常用于权限管理、配置...

    flex总制作可拖拽的网络拓扑图实例

    首先,Flex中的Spark组件库为我们提供了基础的UI组件,如Button、Label等,同时也包含了对拖放(drag-and-drop)功能的支持。在我们的网络拓扑图实例中,我们主要利用Spark组件的拖放API来实现节点的拖拽功能。拖放...

    Flex List DataGrid Menu 拖动技术

    本文将详细介绍如何在Flex中实现这些控件的拖拽功能,并探讨其实现原理及应用示例。 #### 一、Flex拖拽技术概述 Flex的拖拽功能主要由`DragManager`类进行管理。这个类提供了一系列事件和属性来控制拖拽行为。例如...

    Flex__可以拖动的毛玻璃效果.zip

    在Flex中实现这样的效果,我们需要涉及到以下几个关键知识点: 1. **Flex组件库**:Flex提供了丰富的组件库,如Button、Label、Canvas等,我们可以利用这些组件构建用户界面。在这个案例中,我们可能需要用到一个可...

    flex 特效拖动Panel变Window

    Flex提供了一个组件模型,包括各种UI组件如Panel和Window,以及事件处理和数据绑定机制。 2. Panel组件:Panel是Flex中的一个容器组件,可以用来展示和组织其他组件。Panel具有可定制的标题、边框和背景,通常用于...

    flex设计的流程图拖动连线右键功能实现源码

    本文将详细介绍如何在Flex中实现一个具有拖动连线、右键功能的流程图。我们将从以下几个关键知识点展开: 1. **Flex基础**:Flex是Adobe开发的一种基于ActionScript的开源框架,主要用于构建富互联网应用程序(RIA...

    Flex翻书特效 OpenBook

    5. **自定义组件**:Flex允许开发者创建自定义组件,将翻书功能封装为一个独立的UI组件。这样,可以方便地在其他项目中复用此组件。 6. **Flex Builder**:作为开发工具,Flex Builder提供了强大的图形化界面和调试...

Global site tag (gtag.js) - Google Analytics