|
|
|||||
Drag out from Application
Привет. Задача следующая:
1. Есть массив байт 2. Юзер должен иметь возможность перетащить иконку из приложения в папку и в этой папке нужно создать файл с содержимым этого байтмассива. На данный момент нашел возожность лишь копировать из мне известного места в место куда перетащил иконку юзер, при этом я не могу знать наверняка когда копирование закончилось(событие есть илшь об окончании драга, но не копирования). public function testAir() { var spr:Sprite = new Sprite(); spr.graphics.beginFill(0x00000, 0.9); spr.graphics.drawRect(0,0, 100, 100); spr.graphics.endFill(); addChild(spr); spr.addEventListener(MouseEvent.MOUSE_DOWN, onDown) spr.addEventListener(NativeDragEvent.NATIVE_DRAG_COMPLETE, handleDragComplete) spr.addEventListener(NativeDragEvent.NATIVE_DRAG_START, onHandleStart) spr.addEventListener(NativeDragEvent.NATIVE_DRAG_UPDATE, onUpdate) spr.addEventListener(NativeDragEvent.NATIVE_DRAG_DROP, onDrop) } private function onDown(event:Event):void { var spr:Sprite = new Sprite(); spr.graphics.beginFill(0xFF000, 0.9); spr.graphics.drawRect(0,0, 50, 50); spr.graphics.endFill(); var btmd:BitmapData = new BitmapData(50, 50, true, 0); btmd.draw(spr); var imageFile:File = new File(File.applicationDirectory.nativePath + File.separator + "op.jpg"); //это я сначала думал что можно будет массив байт записать, но хрен var fs:FileStream = new FileStream(); fs.open(imageFile, FileMode.READ); var ba:ByteArray = new ByteArray(); fs.readBytes(ba); fs.close(); var fileArray : Array = new Array(); fileArray.push( imageFile ); var transferObject:Clipboard = createClipboard(imageFile); var dragOptions : NativeDragOptions = new NativeDragOptions(); dragOptions.allowCopy = true; dragOptions.allowLink = false; dragOptions.allowMove = true; NativeDragManager.doDrag(InteractiveObject(event.target), transferObject, null, new Point(0,0), dragOptions); } protected function onHandleStart(event:NativeDragEvent):void { trace("onHandleStart"); } protected function onUpdate(event:NativeDragEvent):void { //постоянно трейсит во время перетаскивания //trace("onUpdate"); } protected function onDrop(event:NativeDragEvent):void { trace("onDrop"); } //это событие происходит не после копирования, а после того как юзер отпустил курсор, это сто процентов protected function handleDragComplete(event:NativeDragEvent):void { //ВОТ ЗДЕСЬ Я мечатю получить путь к папке куда юзер перетянул икноку, но нет, это путь к файлу который копируется var files:Array = event.clipboard.getData(ClipboardFormats.FILE_LIST_FORMAT, ClipboardTransferMode.ORIGINAL_PREFERRED) as Array; trace("file:", (files[0] as File).nativePath); trace(event.allowedActions); trace("eventPhase", event.eventPhase); trace("dropAction", event.dropAction); } public function createClipboard( sourceFile:File):Clipboard { var transfer:Clipboard = new Clipboard(); transfer.setData(ClipboardFormats.FILE_LIST_FORMAT, new Array(sourceFile), false); return transfer; } Имеет ли кто опыт? Подскажите плиз.
__________________
мира и гармонии |
|
|||||
Приветствую. Да, можно реализовать IFilePromise и байтэррей передавать как данные. Но есть минусы, не везде может поддерживаться, все делается через буффер. Если файл велик, могут быть проблемы, если юзер изменил содержимео буффера, в общем гарантий нет что файл дойдет железно.
А так, да, задача в эйр не решаемая, узнать ПУТЬ к папке куда юзер сделал драг аут невозможно. Это печально и мой проект от этого сильно страдает.
__________________
мира и гармонии |
Часовой пояс GMT +4, время: 03:42. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|