`
wgcode
  • 浏览: 577447 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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中容易一些。

分享到:
评论

相关推荐

    mornUI使用教程

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

    MornUI编辑器

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

    Flex 3 Cookbook 中文版

    Flex技术可以分为UI技术、数据技术和服务器端技术三大部分。本书覆盖了Flex应用开发者可能遇到的绝大部分技术主题,包括:如何使用各类Flex组件;如何使用视图状态、样式单、特效以及拖拽技术进行美化设计和加强应用...

    Flex 3 Cookbook(高清PDF中文版)

    Flex技术可以分为UI技术、数据技术和服务器端技术三大部分。本书覆盖了Flex应用开发者可能遇到的绝大部分技术主题,包括:如何使用各类 Flex组件;如何使用视图状态、样式单、特效以及拖拽技术进行美化设计和加强...

    morn-master

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

    vue-form-builder:使用Vue.js和Element UI构建并生成表单源代码的拖放表单构建器平台(基于vue和element-ui实现的表单设计平台,生成Element UI的表单源代码)

    提供布局布局,并采用flex实现对齐 一键生成代码,立即可运行 提供自定义组件满足用户自定义需求 提供功能强大的高级组件 国际化支持 生成元素UI表单源代码(方便开发者拖拽生成表单,复制源码到项目中快速开发) ...

    Altium Designer Beta 19.0.10完整版安装包+安装教程+和谐文件

    修复了“属性”面板中的错误,该错误导致NEXUS Server托管组件的“无法在可用库中找到组件”错误,该组件也损坏了引用。 27404 修复了从服务器更新组件数据时由于过多的数据请求导致的ActiveBOM延迟问题。 27535 ...

    asp.net知识库

    深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白 asp.net 运行机制初探(httpModule加载) 利用反射来查看对象中的私有变量 关于反射中创建类型实例的两种方法 ASP.Net应用程序的多进程模型 NET委托...

    软件界面设计工具_3款合集

    总的来说呢,使用UIDesigner来制作原型是很高效的,而制作出来的原型也能够实现设计师、产品经理和程序开发工程师三者间的快速沟通,减少不必要的工作内耗。 ----------------------------------------------------...

    nice:大而全,清晰明了

    javascript复制到剪切板滚动加载图片生成随机字符串文件上传和下载动态字体大小元素是否在视口中限制输入滑动解锁常见表单验证UI代理LI拖拽交换商品规格组合工具提示滑块粘性导航条挪动足球 轮播轮播表格排序编辑...

    leetcode下载-17x.github.io:17x.github.io

    拖拽基础组件,在视图区双击元素弹出编辑层,保存为json(输出为静态页面) 可保存为页面模板 练习项目: 使用:angular1.5.2+sass+gulp+flex+rem 地区筛选,分类筛选,关键字搜索。 信息展示(图片文字) 登陆注册...

Global site tag (gtag.js) - Google Analytics