国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > WEB開發(fā) > 正文

23.10.使用本地拖拽(Drag-and-Drop)API

2024-04-27 13:52:33
字體:
供稿:網(wǎng)友
23.10.1.問題
我想在應(yīng)用程序內(nèi)外拖動數(shù)據(jù).
23.10.2.解決辦法
添加數(shù)據(jù)到剪貼板,使用NativeDragManager類管理拖拽操作。
23.10.3.討論
通過本地的drag-and-drop API文件系統(tǒng)和AIR應(yīng)用程序之間可以進行數(shù)據(jù)傳輸。當(dāng)一個拖拽姿勢啟動后,指定格式的數(shù)據(jù)被添加到剪貼板并傳遞給NativeDragManager的doDrag方法。

你可以注冊事件監(jiān)聽器監(jiān)聽NativeDragManager類拖拽操作發(fā)出的completion事件。事件對象類型是NativeDragEvent類實例,通過NativeDragEvent.clipboard屬性可訪問剪貼板數(shù)據(jù)。

當(dāng)用戶用鼠標(biāo)選擇了應(yīng)用程序的某一個元素,即一個拖拽姿勢被啟動。當(dāng)用戶按住鼠標(biāo),操作進入“拖階段”,所有繼承自flash.display.InteractiveObject類的注冊組件都可接受拖拽動作。

當(dāng)用戶松開鼠標(biāo)即表示拖拽姿勢完成。啟動拖拽姿勢的組件被認(rèn)為是“拖動源”,接受拽操作的InteractiveObject實例被認(rèn)為是“拖拽目標(biāo)”。

Flex Framework本身就支持應(yīng)用程序內(nèi)的拖拽操作,而本地的拖拽API運行在文件系統(tǒng)和AIR程序之間拖拽數(shù)據(jù)。我們推薦使用Flex FrameWork 拖拽API 。如果你熟悉mx.managers.DragManager 類在Flex 程序內(nèi)傳輸數(shù)據(jù)的話, 那么你會發(fā)現(xiàn)flash.desktop.NativeDragManager類與此非常相似。有個重要方面需要注意的是兩個類的DragSource對象被添加到DragManager實例中,而Clipboard對象被添加到NativeDragManager實例中。

下面的例子使用NativeDragManager添加一個圖片到剪貼板,并使用拖拽姿勢傳輸數(shù)據(jù)到文件系統(tǒng)的一個目錄:
+展開
-XML
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
layout="verticalwindowComplete="initHandler();closing="closeHandler();">

<mx:Script>
<![CDATA[
import mx.graphics.codec.PNGEncoder;
private var tempDir:File = File.createTempDirectory();
private var imageData:BitmapData;
private function initHandler():void {
imageData = new BitmapData( image.width, image.height );
imageData.draw( image );
}
private function closeHandler():void {
tempDir.deleteDirectory();
}
private function clickHandler():void {
var transfer:Clipboard = new Clipboard();
transfer.setData( ClipboardFormats.FILE_LIST_FORMAT, [getImageFile()], false);
NativeDragManager.dropAction = NativeDragActions.COPY;
NativeDragManager.doDrag(this ,transfer,imageData);
}
private function getImageFile():File {
var tempFile:File = tempDir.resolvePath( "img.png");
var png:ByteArray = new PNGEncoder().encode( imageData );
var stream:FileStream = new FileStream();
stream.open( tempFile, FileMode.WRITE );
stream.writeBytes( png );
stream.close();
return tempFile
}

]]>
</mx:Script>
<mx:Image id="imagesource="@Embed(source='assets/bigshakey.png')"
buttonMode="trueuseHandCursor="truemouseDown="clickHandler();" />

</mx:WindowedApplication>
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 台东县| 乌兰县| 黎城县| 闻喜县| 东莞市| 介休市| 册亨县| 梅河口市| 台安县| 万盛区| 潍坊市| 乐亭县| 乌鲁木齐市| 聊城市| 广昌县| 古田县| 七台河市| 宜君县| 龙州县| 镇远县| 乌拉特前旗| 宁德市| 三门县| 韩城市| 太仓市| 衡阳县| 丰原市| 东乌珠穆沁旗| 肥西县| 固安县| 交城县| 清水河县| 巴东县| 常州市| 吐鲁番市| 石屏县| 天镇县| 防城港市| 灵武市| 蒙自县| 三台县|