dedecms织梦内容管理系统    
首页 | java | C/C++ | PHP | 操作系统 | ajax | 脚本编程 | 安全技术 | 本站下载页 | flex | CRM | 专题 | QQ群 | 测试中心 | 会员中心 | 积分规则
  当前位置:主页>flex>文章内容
Flex中的拖放(Drag-Drop)事件入门
来源:http://www.adobe.com/devnet/flex/quickstart/adding 作者:

对于一些控件如DataGrid,HorizontalList,List,Menu,PrintDataGrid,TileList,Tree等,我们可以通过设置控件属性dragEnabled,dropEnabled,dragMoveEnabled来很方便的实现拖放效果,但是当我们面临一些不是基于列表控件(non-list-based)的组件
或者容器时,我们该如何使之支持拖放事件呢? FLEX为我们提供了一些类和事件来让我们可以手工写出支持拖放事件的代码,我们可以通过DragManager,DragSource和DragEvent来实现拖放操作.

  拖曳初始化事件(Drag initiator events)
  当我们想把一个控件当作一个拖曳控件(Drag initiator)来使用,我们可以通过mouseDown,mouseMove,dragComplete事件来控制拖放操作.

  鼠标锁定事件和鼠标移动事件(mouseDown events and mouseMove events)
  鼠标锁定事件在当你选择住某个控件并且一直按住鼠标按钮时被触发.
  鼠标移动事件在当你鼠标移动时触发.

  以下的例子里使用图片控件(Image control)内嵌了4张图片(1分,2分,5分和10分硬币的图片).对于每一个图片控件,我们都定义了mouseMove事件,并且定义了一个事件处理方法dragIt()来处理这个事件. 在dragIt()方法里,我们获得一个指向当前硬币图片事件的引用,该引用指到该事件对象的currentTarget属性.我们把它保存为本地对象并命名为dragInitiator.

  接下来我们创建一个DragSource的实例,在其中创建一个addData()方法获取由dragIt()方法传过来的value参数,这个参数用于以后处理Drop事件时使用.


  当我们拖动目标时,我们想让这个硬币图片跟随鼠标移动,我们可以通过创建一个图片实例(Image instance),把这个实例的source属性指到当前拖动的图片目标上去,我们把新创建这个图片实例保存为本地变量dragProxy

  最后我们通过使用DragManager类中的静态方法doDrag(),然后指定相关的drag initiator, drag source, event object, 就可以开始拖曳操作了.

  在这个例子里,你可以拖动图片对象到任何地方,但是无法放置, 因为我们并没有指定任何被放置的对象.

 1<?xml version="1.0" encoding="utf-8"?>
 2<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
 3    width="500" height="160">
 4    
 5    <mx:Script>
 6        <![CDATA[
 7            import mx.controls.Image;
 8            import mx.managers.DragManager;
 9            import mx.core.DragSource;
10            
11            [Embed('assets/1c.png')]
12            [Bindable]
13            public var OneCent:Class;
14            
15            [Embed('assets/2c.png')]
16            [Bindable]
17            public var TwoCents:Class;
18            
19            [Embed('assets/5c.png')]
20            [Bindable]
21            public var FiveCents:Class;
22            
23            [Embed('assets/10c.png')]
24            [Bindable]
25            public var TenCents:Class;
26            
27            private function dragIt(event:MouseEvent, value:uint):void {
28                var dragInitiator:Image = event.target as Image;
29                
30                var dragSource:DragSource = new DragSource();
31                dragSource.addData(value,'value');
32                
33                var dragProxy:Image    = new Image();
34                dragProxy.source = event.currentTarget.source;
35                
36                DragManager.doDrag(dragInitiator, dragSource, event, dragProxy);
37            }            
38        ]]>
39    </mx:Script>
40    
41    <mx:HBox>
42
43        <mx:Image 
44            id="oneCent" source="{OneCent}"
45            mouseMove="dragIt(event, 1);"
46
47        />
48        <mx:Image 
49            id="twoCents" source="{TwoCents}"
50            mouseMove="dragIt(event, 2);"
51
52        />
53        <mx:Image 
54            id="fiveCents" source="{FiveCents}"
55            mouseMove="dragIt(event, 5);"
56
57        />
58        <mx:Image 
59            id="tenCents" source="{TenCents}"
60            mouseMove="dragIt(event, 10);"
61
62        />        
63    </mx:HBox>
64
65</mx:Application>
66

想实践的话随便搞4张差不多的图片放到flex项目的assets下,对应好命名,就可使用.


上一篇:LINUX下vsftpd的磁盘限额功能   下一篇:flex RSS 2.0 规范
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·Flex 打印DataGrid内容
·Flex中的闪烁效果
·flex: 使用setInterval 制作定时
·FLEX优秀开源项目介绍
·AS3中的正则表达式
·flex确认提示(confirm window)
·Flex RemoteObject类参考
·flex:RemoteObject 和 DataGrid
·AS3的面向对象特点概述
·利用AS3的图形界面开发及资源管
·AS3.0 访问属性
·AS3.0强大的事件机制
  相关文章
·flex RSS 2.0 规范
·flex UIComponent直接创建Button
·flex 绘制图形例子
·AIR下让组件(UIComponent)支持
·URLLoader加载XML
·AS3 for each in
·ActionScript 3 中的可变长数组
·对Adobe Flex的十大误解
·flex存储和验证数据
·Flex HTTPService如何给后台传递
·flex 如何使用HTTPService传值
·flex httpservice xml
  相关信息
copy right @ 百家拳软件项目研究室 2007 辽ICP备07011763