Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > Flash Приложения: AIR, Zinc и тд.

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.08.2015, 08:20
3p.station вне форума Посмотреть профиль Отправить личное сообщение для 3p.station Найти все сообщения от 3p.station
  № 1  
Ответить с цитированием
3p.station
 
Аватар для 3p.station

блогер
Регистрация: Oct 2009
Адрес: кочевник. Киев
Сообщений: 453
Записей в блоге: 5
По умолчанию Drag out from Application

Привет. Задача следующая:
1. Есть массив байт
2. Юзер должен иметь возможность перетащить иконку из приложения в папку и в этой папке нужно создать файл с содержимым этого байтмассива.

На данный момент нашел возожность лишь копировать из мне известного места в место куда перетащил иконку юзер, при этом я не могу знать наверняка когда копирование закончилось(событие есть илшь об окончании драга, но не копирования).
Код AS3:
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;
		}
Но это не совсем подходит. В идеале нужно всего лишь узнать куда юзер перетащил иконку, чтобы там создать файл.

Имеет ли кто опыт? Подскажите плиз.
__________________
мира и гармонии

Старый 23.08.2015, 14:35
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 2  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Начните отсюда.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 04.09.2015, 12:17
3p.station вне форума Посмотреть профиль Отправить личное сообщение для 3p.station Найти все сообщения от 3p.station
  № 3  
Ответить с цитированием
3p.station
 
Аватар для 3p.station

блогер
Регистрация: Oct 2009
Адрес: кочевник. Киев
Сообщений: 453
Записей в блоге: 5
Приветствую. Да, можно реализовать IFilePromise и байтэррей передавать как данные. Но есть минусы, не везде может поддерживаться, все делается через буффер. Если файл велик, могут быть проблемы, если юзер изменил содержимео буффера, в общем гарантий нет что файл дойдет железно.

А так, да, задача в эйр не решаемая, узнать ПУТЬ к папке куда юзер сделал драг аут невозможно. Это печально и мой проект от этого сильно страдает.
__________________
мира и гармонии

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:59.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 19:59.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.