惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
SegmentFault 最新的问题
Jina AI
Jina AI
罗磊的独立博客
V
Visual Studio Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
J
Java Code Geeks
U
Unit 42
Microsoft Azure Blog
Microsoft Azure Blog
B
Blog RSS Feed
爱范儿
爱范儿
酷 壳 – CoolShell
酷 壳 – CoolShell
Last Week in AI
Last Week in AI
T
The Blog of Author Tim Ferriss
腾讯CDC
Hugging Face - Blog
Hugging Face - Blog
T
Tailwind CSS Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
I
InfoQ
月光博客
月光博客
博客园_首页
Vercel News
Vercel News
P
Proofpoint News Feed
GbyAI
GbyAI
Y
Y Combinator Blog

博客园 - andyran

xp下多站点及asp.net mvc3配置 获取Controller.ModelState中的所有错误信息 CSS line-height:XX在IE7下面与IE6、IE8、FireFox高度不一样 HRESULT:0x80070057 (E_INVALIDARG)的异常的解决方案 css中div高度自适应的方法(兼容FF IE) Win7安装SQL2005的IIS7设置 CSS兼容与标准,HACK技巧 - andyran - 博客园 通过jquery选择li菜单实现无刷新css效果 - andyran - 博客园 .NET打包安装MSDE以及安装和卸载 为FCKEDITOR添加导入Word文档功能 PEAR之DB_DataObject快速安装 c#实现随鼠标移动窗体 SVN使用技巧 - 不要把不必要的文件版本化 svn架设快速入门(转) utf8的bom问题 续:使用FLEX为上传的图片添加水印 使用FLEX实现简单WEB在线拍照功能 使用jQuery编写一个UBB编辑器 编写jQuery插件来扩展checkbox
Flex中的拖放(Drag-Drop)事件入门
andyran · 2007-06-15 · via 博客园 - andyran

  原文:http://www.adobe.com/devnet/flex/quickstart/adding_drag_and_drop/,本文翻译只是备忘,有错误的地方多多谅解。  

  对于一些控件如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下,对应好命名,就可使用.