作者强调,在AIR中实现拖拽操作要用到的标签就是DragManager ,实现的原理大致上是如下的步骤:
1.当用户拖拽一个文件到AIR应用,AIR应用通过侦听NativeDragEvent.NATIVE_DRAG_ENTER,捕获到拖拽事件
addEventListener(NativeDragEvent.NATIVE_DRAG_ENTER, onDragIn);
通过侦听NativeDragEvent.NATIVE_DRAG_DROP,捕获到拖拽完成事件
addEventListener(NativeDragEvent.NATIVE_DRAG_DROP, onDragDrop);
2.拖拽的数据实际上位于系统的剪切板内,所以AIR需要使用clipboard.getData方法来获取数据
private function onDragIn(e:NativeDragEvent):void{
//check and see if files are being drug in
if(e.clipboard.hasFormat(ClipboardFormats.FILE_LIST_FORMAT)){
var files
:Array = e.clipboard.getData
(ClipboardFormats.FILE_LIST_FORMAT
) as Array;
DragManager.acceptDragDrop(this);
}
}
3.需要判断一下拖拽的数据是否符合要求,如果是允许的数据格式,则执行DragManager.acceptDragDrop()方法
private function onDragDrop(e:NativeDragEvent):void{
//get the array of files being drug into the app
var arr
:Array = e.clipboard.getData
(ClipboardFormats.FILE_LIST_FORMAT
) as Array;
uploadGrid.dataProvider = arr;
}
4.由于从剪切板中获取的数据是Array格式,所以你可以直接赋给DataGrid作为数据源,在DataGrid中显示出来
第二篇 - 从桌面拖拽文件到AIR应用程序
来自:http://www.mindtheflex.com/?p=81
这篇文章的初衷与上一篇类似,不过作者设计的模式是从用户桌面上拖拽一个图片到AIR应用程序,然后AIR应用程序将它以BLOB的格式存放到数据库中(BLOB是数据库中用来存储二进制文件的字段类型)。
开始你需要创建一个主的MXML文件和一个用于存放图片的数据库(SQLite),你也手工创建,也可以通过下面的SQL语句:
CREATE TABLE IF NOT EXISTS picture_objects(id integer PRIMARY KEY autoincrement,label text, picturedata blob);
在存取数据方面,作者使用了DAO的模式,接口:
package dao {
import mx.collections.ArrayCollection;
public interface PictureObjectDao {
function savePictureObject
(label
:String, testObject
:Object):void;
function getPictureObjectByLabel
(label
:String):ArrayCollection;
function getAllPictureObjects():ArrayCollection;
}
}
保存一个图片到数据库的时候,使用的依然是:clipboard.getData
private function onDrop(event:NativeDragEvent):void {
var airData
:Object=event.clipboard.formats;
//读取剪切板
for each(var type:String in airData
) {
if (type != "air:url") {
var airObjects
:Array=event.clipboard.getData
(type)as Array;
//获取剪切板中的数据
var inFile:File=airObjects[0]as File;//获取剪切板中的文件
var fileInStream:FileStream=new FileStream();//文件流
fileInStream.open(inFile, FileMode.READ);
fileInStream.readBytes(contentArray);//读取字节保存到contentArray
picture.source=contentArray;
savePictureObject(inFile.name, contentArray);//保存到数据库
}
}
pictureObjectDao.savePictureObject(label, pictureObject);
addedPictureObjects=pictureObjectDao.getAllPictureObjects();
}
}
分享到:
相关推荐
构建 ADOBE® AIR® 应用程序 目录 第 1 章: Adobe AIR 简介 第 2 章: Adobe AIR 安装 安装 Adobe AIR 删除 Adobe AIR 安装和运行 AIR 范例应用程序 Adobe AIR 更新 第 3 章: 使用 AIR API 特定于 AIR 的 ...
dreamweaver的adobe air扩展Adobe_AIR.mxp
adobe air 安装包part1adobe air 安装包part1adobe air 安装包part1adobe air 安装包part1
Adobe AIR技术学习Adobe AIR技术学习
您还可以通过 air 对象引用这些类,即在代码中包含 AIRAliases.js 文件: 这种语言参考中的 AIR 运行时类仅能用于应用程序安全沙盒中的内容。更多信息,请参阅eveloping AIR Applications with HTML 一书。 该...
这是一个Installer文件,安装的是AdobeAIR软件。使用此软件可以使得air文件轻松安装。
AdobeAIR.dmg
AdobeAIR是最新的播放器为用户提供方便
adobe air 连接 airplay功能
adobe air 安装包partadobe air 安装包part
adobe air for android v3.03 apk文件 在安卓上安装air平台
在 Adobe AIR 应用程序中对 PDF 内容进行跨脚本编写 拖动、复制和粘贴数据 读写 XML 首选参数文件 处理停靠栏和系统任务栏 异步处理本地 SQL 数据库 同步处理本地 SQL 数据库 处理窗口和菜单 控制窗口的显示...
AdobeAIR入门教程,adobe公司内部资料,值得学习。
adobe air 安装包partadobe air 安装包part
Adobe Air Programming Unleashed
flash adobe air 开发的财经音视频,rtmp推送。
利用 Adobe® AIR® 技术,开发人员可以创建和打包跨平台游戏/适用于 iOS、Android、Windows 和 Mac OS 等主要平台的应用程序。
使用AdobeAIR开发android应用
adobe AIR 安装环境,AIR运行时,没这个,AIR程序运行不了
解决AIR对ADOBE AIR的依赖,软件绿色版