• 【设为首页】
  • 【收藏闪客居】
当前位置:主页>AIR>文章内容
  • AIR Drag and Drop 学习笔记(20080303)
  • 来源:cbm's land 作者:cbm 2008-04-03 【

昨天学习到File类和FileStream类,操作起来很方便的,本准备用AIR技术制作一个文件夹图标修改器,但遗憾的是并没有提供设置文件属性的方法。这样修改文件夹图标的关键技术不能实现了。

今天看了一下拖拽类,主要由NativeDragEvent来监听鼠标行为,用 Clipboard.hasFormat() 来判断是否是支持的文件类型。然后用NativeDragManager.acceptDragDrop(dragTarget)来控制拖拽对象的鼠标显示状态。在NativeDragEvent.NATIVE_DRAG_DROP事件处理拖拽的文件。可以按不同类型的文件来处理。内置文件类型

  • BITMAP_FORMAT
  • FILE_LIST_FORMAT
  • HTML_FORMAT
  • TEXT_FORMAT
  • URL_FORMAT

2008-03-02_231944.png
贴上代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package
{
import flash.desktop.*;
import flash.display.Sprite;
import flash.events.*;
import flash.filesystem.File;
import flash.text.TextField;
 
public class DragOut_test extends Sprite {
 
private var dragTarget:Sprite = new Sprite();
private var backgroundColor:Number = 0x0097CA;
private var consoleText:TextField= new TextField()
public function DragOut_test(){
 
this.addChild(consoleText)
this.addChild(dragTarget)
dragTarget.focusRect = false;
stage.stageFocusRect = false;
drawBackground()//注意stage上必须要有可见元素,组成检测区域。
configConsoleText()//创建输出文本框
dragTarget.addEventListener(NativeDragEvent.NATIVE_DRAG_ENTER,onDragIn);//通常做拖入文件的类型检查
dragTarget.addEventListener(NativeDragEvent.NATIVE_DRAG_DROP,onDrop);//拖拽完成事件
dragTarget.addEventListener(NativeDragEvent.NATIVE_DRAG_EXIT,onDragExit);//拖拽取消
}
private function drawBackground():void{
 
dragTarget.graphics.clear();
dragTarget.graphics.beginFill(backgroundColor,0);
dragTarget.graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight);
dragTarget.graphics.endFill();
dragTarget.hitArea=null
}
private function configConsoleText(){
consoleText.width=stage.stageWidth
consoleText.height=stage.stageHeight
consoleText.selectable=false
consoleText.multiline=true
consoleText.appendText('请拖拽一个或者多个文件到此!\n')
}
private function onDragIn(event:NativeDragEvent):void{
 
var transferable:Clipboard = event.clipboard;
if(transferable.hasFormat(ClipboardFormats.BITMAP_FORMAT) ||
transferable.hasFormat(ClipboardFormats.FILE_LIST_FORMAT) ||
transferable.hasFormat(ClipboardFormats.TEXT_FORMAT) ||
transferable.hasFormat(ClipboardFormats.URL_FORMAT)){
 
consoleText.appendText("接受的格式。\n")
NativeDragManager.acceptDragDrop(dragTarget);
} else {
consoleText.appendText("不接受的格式。\n")
 
}
}
 
private function onDrop(event:NativeDragEvent):void{
 
var dropfiles:Array= event.clipboard.getData(ClipboardFormats.FILE_LIST_FORMAT) as Array;
for each (var file:File in dropfiles)
{
consoleText.appendText("拖入文件:"+file.nativePath+'\n')
 
}
}
private function onDragExit(event:NativeDragEvent):void{
consoleText.appendText("拖拽退出。\n")
}
 
}
 
}





上一篇:AIR SQL 学习笔记(20080229)   下一篇:小技巧:在Flex builder 3 中创作纯AS的AIR项目
  • 用户名:新注册) 密码: 匿名评论
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)

Copyright © 2006-2008 flashas.net All Rights Reserved.
网站内容咨询: admin#flashas.net (#为@) 联系QQ:40777822 浙ICP备06033001号
(本网站最佳浏览解析度为1024*768, 建议使用IE 6.0或以上版本浏览器。)