Основы перетаскивания в AIRAdobe AIR 1.0 и более новых версий
Краткое разъяснение и примеры кодов с перетаскиванием в приложении AIR см. в следующих статьях краткого руководства на Adobe Developer Connection:
API-интерфейс перетаскивания содержит следующие классы.
Пакет
|
Классы
|
flash.desktop
|
Константы, используемые с API-интерфейсом перетаскивания, определены в следующих классах:
|
flash.events
|
NativeDragEvent
|
Этапы перетаскиванияЖест перетаскивания включает три этапа:
- Начало
- Пользователь начинает операцию перетаскивания, удерживая кнопку мыши и перетаскивая объект из компонента или элемента компонента. Компонент-источник обычно выступает в качестве инициатора перетаскивания и отправляет события nativeDragStart и nativeDragComplete. Приложение Adobe AIR начинает операцию перетаскивания вызовом метода NativeDragManager.doDrag() в ответ на событие mouseDown или mouseMove.
Если операция перетаскивания начинается извне приложения AIR, отсутствует объект-инициатор для обработки событий nativeDragStart или nativeDragComplete.
- Перетаскивание
- Удерживая кнопку мыши, пользователь переводит курсор на другой компонент, приложение или рабочий стол. Во время выполнения перетаскивания его инициатор отправляет события nativeDragUpdate. (Однако это событие не отправляется в AIR для 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.
|
|