air里面的drag和drop和web里面的应用不太相同。看了一下,其实相当于去读取剪切板。
首先,需要创建一个clipborad的对象,通过剪切板传输数据和对象,包含了几个标准的格式,
- BITMAP_FORMAT:一个 BitmapData 对象(仅限 AIR)
- FILE_LIST_FORMAT:File 对象的数组(仅限 AIR)
- HTML_FORMAT:HTML 格式的字符串数据
- TEXT_FORMAT:字符串数据
- RICH_TEXT_FORMAT:包含 RTF 格式数据的 ByteArray
- URL_FORMAT:URL 字符串(仅限 AIR)
-
主要使用的方法涉及到了getData(),setData(),hasFormat,分别对应获取,设置,检查clipboard对象信息。
<?xml version="1.0" encoding="utf-8"?> <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" styleName="plain" width="100%" height="100%" > <fx:Script> <![CDATA[ import mx.controls.Alert; import mx.core.IUIComponent; import mx.managers.DragManager; ]]> </fx:Script> <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> </fx:Declarations> <s:nativeDragEnter> <![CDATA[ if (event.clipboard.hasFormat(ClipboardFormats.FILE_LIST_FORMAT)){ var files:Array = event.clipboard.getData(ClipboardFormats.FILE_LIST_FORMAT) as Array; if (files.length == 1){ DragManager.acceptDragDrop(event.currentTarget as IUIComponent); //setStyle("backgroundColor", 0xccccff); } } ]]> </s:nativeDragEnter> <s:nativeDragExit> <![CDATA[ ]]> </s:nativeDragExit> <s:nativeDragDrop> <![CDATA[ var arr:Array = event.clipboard.getData(ClipboardFormats.FILE_LIST_FORMAT) as Array; startImage.source = (arr[0] as File).url; var j:String = (arr[0] as File).url; trace(j.split(".")[1]); if(j.split(".")[1] == "txt"){ var currentFile:File = arr[0]; var fs:FileStream = new FileStream(); fs.open(arr[0],FileMode.READ); startTA.text = fs.readMultiByte(fs.bytesAvailable,File.systemCharset); fs.close(); trace(startTA.text); } ]]> </s:nativeDragDrop> <s:nativeDragOver> <![CDATA[ //var i:int = Math.floor(Math.random()*10); //var j:String = "0x"+i+"000cc"; var i:int = event.stageX; var j:int = event.stageY; setStyle("backgroundColor",i*j); ]]> </s:nativeDragOver> <mx:ViewStack id="startVS" width="100%" height="100%" creationPolicy="all"> <mx:Canvas width="100%" height="100%"> <mx:Text verticalCenter="0" horizontalCenter="0" color="white"> <mx:htmlText><![CDATA[<font size="20"><b>Drag an image here</b></font>]]></mx:htmlText> </mx:Text> <s:TextArea id="startTA" width="200" height="200"/> <mx:Image id="startImage" width="100%" height="100%" horizontalAlign="center" verticalAlign="middle"/> </mx:Canvas> </mx:ViewStack> </s:WindowedApplication>
先看了例子。这里还用到了几个事件,分别是nativeDragEnter,nativeDragOver,nativeDragDrop,nativeDragExit
主要是对air程序监听到了拖放信息的时候触发,当处于不同事件的时候做不同的事情。
尝试了用Math.Radom(),去设置background的背景色。
clipboard最终是一个Object File对象。
这里还用到了String的split()方法,去获取文件的后缀名。把txt文件内容放到TextArea里面。
所以拖拽的本质还是在操作 系统的剪切板,只是换了交互方式
相关推荐
drag和drop事件
【深度VMware6.0完美精简汉化版+Drag&Drop_FixPatch】是一款针对VMware Workstation 6.0的专业优化版本,它结合了深度定制和汉化,为用户提供更加符合中文用户习惯的操作界面。VMware Workstation是一款强大的虚拟机...
Java中的Drag and Drop拖拽技术是指在Java应用程序中,实现拖拽操作的技术,可以分为初级的D&D和高级的D&D两种方法,存在三个重要的概念:Drag Source、Drop Target和Transferable。 Drag and Drop技术可以应用于...
在Android开发中,拖放(Drag and Drop)功能是一种常见的用户交互方式,允许用户通过手势将一个对象从一处移动到另一处。这个功能在许多场景下都非常实用,比如整理应用抽屉、移动文件或者在布局中调整控件位置等。...
每个`DragEvent`都有一个状态,如`ACTION_DRAG_STARTED`、`ACTION_DRAG_ENTERED`、`ACTION_DRAG_EXITED`、`ACTION_DRAG_LOCATION`、`ACTION_DRAG_ENDED`和`ACTION_DROP`。在你的视图中添加`onDragListener`来监听...
HTML5作为现代网页开发的标准,引入了许多新的特性和API,其中一项就是拖放(Drag&Drop)功能。这项技术允许用户通过鼠标或触控设备将元素从一个位置拖动到另一个位置,极大地提升了用户体验。本文将深入探讨HTML5中...
而且我已经把windows和linux的vmtools包,以及解决拖拽的问题脚本Drag&Drop_FixPatch一并加入进来,欢迎大家下载使用。 注意:因为大小问题,我分为两卷: VMware6.0深度完美汉化版+vmtools+Drag&Drop_FixPatch(1) ...
在IT行业中,文件拖放(Drag and Drop)是一种常见的用户交互技术,允许用户通过鼠标将一个元素从一处拖动到另一处,常用于文件管理、应用程序界面操作等场景。本资料"DragandDrop.rar_dragAndDrop"聚焦于在Internet...
总结起来,Drag and Drop Component Suite 3.7为Delphi开发者提供了一套完整的工具集,使得实现拖放功能变得更加简单和高效。无论是在文件管理、数据迁移,还是在创建自定义控件的过程中,这一组件包都能显著提升...
5. **Drag and Drop Operations**: 拖放操作有多种类型,如`DND.DROP_COPY`(复制)、`DND.DROP_MOVE`(移动)和`DND.DROP_DEFAULT`(默认)。在`DragSourceAdapter`和`DropTargetAdapter`中,你可以根据需要重写...
HTML5是现代网页开发的重要标准,它引入了许多新特性,其中拖放(Drag and Drop)功能就是一项增强用户交互体验的重要接口。拖放接口允许用户通过鼠标或触控设备将元素从一个位置拖动到另一个位置,使得网页的互动性...
【标题】"DragAndDrop_Demo源码"是关于C++编程的一个...通过深入研究DragAndDrop_Demo源码,开发者不仅可以掌握C++中拖放功能的实现,还能提升对GUI编程、事件处理和数据传输的理解,为今后的项目开发积累宝贵经验。
Qt之QToolButton与QGroupBox实现动态拖拽Drag、Drop功能,可以随意拖放到QGroupBox内,也可以与现有的QToolButton交换位置,也可以拖拽出QGroupBox外释放
在Delphi编程环境中,实现Windows应用程序的交互性和用户友好性,往往离不开“拖放”(Drag & Drop)功能的支持。Drag&Drop VCL是针对这一需求而设计的一套组件库,它基于Windows Shell,允许开发者轻松地在应用程序...
一、Java Swing中的Drag和Drop机制 1. **导入相关包**: 在实现Drag and Drop功能时,我们需要导入`java.awt.dnd.*`包,这个包包含了所有与拖放操作相关的类和接口。例如,`DragSource`、`DropTarget`、`...
标题中的“一个很不错的drag & drop”指的是使用拖放(Drag & Drop)技术的一个应用程序或功能,这在网页设计和开发中非常常见。拖放功能允许用户通过鼠标将元素从一处拖到另一处,实现数据的移动、拷贝或者进行其他...
`System.Windows.Forms`提供了实现Drag and Drop所需的基础类和事件,而`System.Drawing`则用于处理图形,包括文件图标。 在C#中,你可以通过重写或添加控件的几个关键事件来启用拖放功能。这些事件包括`DragEnter`...
"drag drop java"是Java编程语言中的一个特性,Java提供了Swing和JavaFX两个库来支持GUI应用程序的开发。在这两个库中,都有内置的拖放支持。在Swing中,我们可以使用`TransferHandler`类和`DragSource`、`...
在iOS 11中,Apple引入了一项名为“Drag and Drop”的强大功能,极大地提升了用户在设备上处理和移动内容的便捷性。这个功能允许用户通过简单的手势将内容(如文本、图片、文件等)从一个应用拖动到另一个应用,从而...
"drag-drop-folder-tree" 是一个专为实现这种功能而设计的组件,它不仅具备基本的树形展示,还提供了额外的交互功能,如节点的拖放操作和右键点击菜单。 动态树的核心特点在于其动态性,这意味着树中的节点可以根据...