Краткое разъяснение и примеры кодов с перетаскиванием в приложении AIR см. в следующих статьях краткого руководства на Adobe Developer Connection:
API-интерфейс перетаскивания содержит следующие классы.
Пакет
|
Классы
|
flash.desktop
|
Константы, используемые с API-интерфейсом перетаскивания, определены в следующих классах:
|
flash.events
|
NativeDragEvent
|
Этапы перетаскивания
Жест перетаскивания включает три этапа:
-
Начало
-
Пользователь начинает операцию перетаскивания, удерживая кнопку мыши и перетаскивая объект из компонента или элемента компонента.
Компонент-источник обычно выступает в качестве инициатора перетаскивания и отправляет события
nativeDragStart
и
nativeDragComplete
. Приложение Adobe AIR начинает операцию перетаскивания вызовом метода
NativeDragManager.doDrag()
в ответ на событие
mouseDown
или
mouseMove
.
Если операция перетаскивания начинается извне приложения AIR, отсутствует объект-инициатор для обработки событий
nativeDragStart
или
nativeDragComplete
.
-
Перетаскивание
-
Удерживая кнопку мыши, пользователь переводит курсор на другой компонент, приложение или рабочий стол.
Во время выполнения перетаскивания его инициатор отправляет события
nativeDragUpdate
. (Однако это событие не отправляется в AIR for Linux.) Когда пользователь наводит указатель мыши на возможную цель перетаскивания в приложении AIR, целевой элемент отправляет событие
nativeDragEnter
. Обработчик событий может исследовать объект события, чтобы определить, принимает ли целевой элемент формат перетаскиваемых данных, и, если это так, разрешить пользователю оставить там данные, вызвав метод
NativeDragManager.acceptDragDrop()
.
Пока жест перетаскивания выполняется над интерактивным объектом, этот объект непрерывно отправляет события
nativeDragOver
. Когда жест выходит за границы интерактивного объекта, тот отправляет событие
nativeDragExit
.
-
Отпускание
-
Пользователь отпускает кнопку мыши в границах возможного целевого элемента.
Если целью является приложение или компонент AIR, то целевой объект отправляет событие
nativeDragDrop
. Обработчик событий имеет доступ к данным, переданным от объекта события. Если цель лежит за пределами AIR, то отпускание обрабатывается операционной системой или другим приложением. В обоих случаях объект-инициатор отправляет событие
nativeDragComplete
(если перетаскивание начинается в границах AIR).
Класс NativeDragManager отвечает как за жест «перетаскивания из», так и за жест «перетаскивания в». Все члены класса NativeDragManager являются статическими, поэтому экземпляры этого класса создавать не нужно.
Объект Clipboard
Данные, перетаскиваемые из приложения или компонента или обратно, сохраняются в объекте Clipboard. Один объект Clipboard может поддерживать различные представления одних и тех же данных, тем самым расширяя диапазон приложений, которые смогут распознавать и использовать эти данные. Например, изображение может храниться в виде данных изображения, сериализованного объекта и файла. Визуализация данных в определенном формате может задерживаться до вызова функции визуализации, а та не вызывается, пока не будут считаны данные.
После начала жеста перетаскивания доступ к объекту Clipboard может быть получен только из обработчика событий
nativeDragEnter
,
nativeDragOver
и
nativeDragDrop
. После окончания перетаскивания объект Clipboard не может быть считан или повторно использован.
Объект приложения может быть передан в качестве ссылки и в качестве сериализованного объекта. Ссылки действительны только в границах исходного приложения. Сериализованные объекты могут передаваться от одного приложения AIR к другому, но использовать их можно только с объектами, которые остаются действительными в результате сериализации и десериализации. Сериализованные объекты преобразуются в формат ActionScript 3 (AMF3) — формат передачи строковых данных.
Работа с инфраструктурой Flex
В большинстве случаев при создании приложений Flex рекомендуется использовать API-интерфейс перетаскивания Adobe® Flex™. Инфраструктура Flex предлагает идентичный набор функций, когда приложение Flex выполняется в среде AIR (с использованием AIR NativeDragManager). Flex поддерживает меньший набор функций, когда компонент или приложение выполняется в среде обозревателя с более строгими ограничениями. Классы AIR нельзя использовать в компонентах или приложениях, выполняющихся за пределами рабочей среды AIR.
|
|
|