(Только AIR)
Пакетflash.desktop
Классpublic class NativeDragManager
НаследованиеNativeDragManager Inheritance Object

Версии среды выполнения: AIR 1.0

Класс NativeDragManager отвечает за управление операциями перетаскивания. С помощью технологии перетаскивания пользователь может перемещать данные между приложением AIR и ОС, между двумя приложениями или компонентами одного приложения.

Можно перемещать следующие типы данных:

Примечание. Все члены NativeDragManager являются статическими. Нужды в создании этого класса нет.

Операция перетаскивания представляет собой действие пользователя, которое начинается с щелчка по видимому элементу и его дальнейшему перетаскиванию куда-либо. По мере передвижения в окне приложения AIR перетаскиваемые интерактивные объекты отправляют события собственного перетаскивания. Обработчики этих событий могут вызывать метода класса NativeDragManager для определения возможности перетащить данный элемент на какой-либо объект. В результате NativeDragManager реагирует на действия пользователя изменением курсора мыши.

Операции перетаскивания

Перетаскивание используется для трех типов действий, называемых операциями. Так как значение этих операций зависит от контекста приложения, никого определенной реакции на действия при выполнении программы не предусмотрено. Однако, правильная реализация операций повышает удобство использование данного приложения.

Возможные операции:

Возможные операции по перетаскиванию задаются параметром allowedActions при вызове NativeDragManager.doDrag() в момент начала операции перетаскивания. Если параметр allowedActions не задан, все операции считаются допустимыми. Потенциальные цели опускания, могут использовать свойство allowedActions объекта NativeDragEvent для запрещения определенных операций перетаскивания (несмотря на то, что в ходе выполнения программы эти ограничения отсутствуют).

Если цель опускания реализует только одно действие, то объект может настроить в обработчиках свойство dropAction класса NativeDragManager на обработку событий nativeDragEnter и nativeDragOver. Настройка данного свойства до перетаскивания позволит обновлять курсор мыши для отображения поддерживаемого действия, а также исключит возможность совершения пользователем несовместимого действия с помощью клавиш-модификаторов. При совершении несовместимой операции перетаскивание не осуществляется, даже если цель вызывает метод acceptDrop().

Если потенциальная цель принимает опускание, она должна указать совершаемое действие путем задания свойства NativeDragManager.dropAction в ответ на событие nativeDragDrop. Эта операция возвращается инициирующему экранному объекту в виде события nativeDragComplete. Если цель опускания операцию не задает, то возвращается операция по умолчанию из списка доступных операций в следующем порядке: копирование, перемещение, ссылка. Инициирующий объект отвечает за обновление внутреннего состояния в ответ на выбранную операцию.

Константы строк для названий операций задаются в классе NativeDragActions.

Порядок событий

Процесс перетаскивание начинается с вызова метода NativeDragManager.doDrag() в рамках обработчика событий mouseDown или mouseMove и проходит через следующую последовательность событий в ответ на действия пользователя:

Жесты при работе с приложениями

Когда жест перетаскивания входит в окно приложения AIR из приложения, не поддерживающего AIR, то событие nativeDragStart или nativeDragComplete объектом не отправляется. Отправляемые во время этого жеста события будут, напротив, следовать тому же принципу, что и жесты, начатые и законченные в пределах приложения AIR.

Когда жест перетаскивания покидает окно приложения AIR, то целевой объект для отправки событий nativeDragEnter, nativeDragOver или nativeDragDrop отсутствует. Инициирующий объект по-прежнему отправляет событие nativeDragComplete, которое сообщает об операции перетаскивания, установленной операционной системой (или none, если опускание было отклонено).

Когда жест перетаскивания перемещается между двумя приложениями AIR, то инициирующие и целевые экранные объекты этих приложений отправляют события как обычно.

Информация о передаче

Все передаваемые во время жеста перетаскивания данные содержатся в объекте Clipboard. Этот объект данных добавляется к операции перетаскивания с помощью метода NativeDragManager.doDrag(), с которого начинается жест перетаскивания. Потенциальные цели опускания могут получить доступ к объекту Clipboard через свойство clipboard самого объекта, инициирующего событие перетаскивания. После начала операции перетаскивания, к объекту Clipboard можно получить доступ через обработчик события NativeDragEvent. Остальные попытки получить доступ к объекту приводят к ошибке выполнения.

Соображения безопасности

Способ доступа к перетаскиваемым данным задается изолированными средами инициирующих и потенциальных целевых объектов. Если оба объекта находятся в одной и той же изолированной среде, тогда доступ к данным можно получить через любой объект NativeDragEvent. Однако, если эти объекты расположены в разных изолированных средах, то доступ к данным можно получить только в целевой изолированной среде в пределах обработчика события nativeDragDrop. Прочие обработчики событий собственного перетаскивания также могут получать доступ к объекту Clipboard, на который ссылается свойство clipboard события, чтобы определить доступные форматы данных. При этом вызов метода clipboard.getData() приведет к ошибке системы безопасности.

См. также

flash.events.NativeDragEvent
flash.desktop.NativeDragActions
flash.desktop.NativeDragOptions
flash.desktop.Clipboard


Общедоступные свойства
 СвойствоОпределено
 Inheritedconstructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта.
Object
  AIR-only dragInitiator : InteractiveObject
[статические] [только для чтения] Интерактивный объект, который инициировал операцию перетаскивания, передается вызванному методу NativeDragManager.doDrag().
NativeDragManager
  AIR-only dropAction : String
[статические] Операция перетаскивания, определяемая целью опускания.
NativeDragManager
  AIR-only isDragging : Boolean
[статические] [только для чтения] Сообщает, находится ли операция перетаскивания в процессе выполнения.
NativeDragManager
 Inheritedprototype : Object
[статические] Ссылка на модель объекта класса или функции.
Object
Общедоступные методы
 МетодОпределено
  
[статические] Информирует объект NativeDragManager о том, что указанный целевой интерактивный объект может принять опускание, которое соответствует текущему событию перетаскивания.
NativeDragManager
  
AIR-only doDrag(dragInitiator:InteractiveObject, clipboard:Clipboard, dragImage:BitmapData = null, offset:Point = null, allowedActions:NativeDragOptions = null):void
[статические] Начинает выполнять операцию перетаскивания.
NativeDragManager
 Inherited
Показывает, определено ли заданное свойство для объекта.
Object
 Inherited
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра.
Object
 Inherited
Показывает наличие заданного свойства и его перечисляемость.
Object
 Inherited
Задает доступность динамического свойства для операций цикла.
Object
 Inherited
Возвращает строковое представление заданного объекта.
Object
 Inherited
Возвращает элементарное значение заданного объекта.
Object
Сведения о свойстве
AIR-only dragInitiatorсвойство
dragInitiator:InteractiveObject  [только для чтения]

Версии среды выполнения: AIR 1.0

Интерактивный объект, который инициировал операцию перетаскивания, передается вызванному методу NativeDragManager.doDrag().


Реализация
    public static function get dragInitiator():InteractiveObject
AIR-only dropActionсвойство 
dropAction:String  [чтение и запись]

Версии среды выполнения: AIR 1.0

Операция перетаскивания, определяемая целью опускания.

Свойство dropAction настраивается в обработчике события nativeDragDrop. Если свойство dropAction не настроено до момента наступления события nativeDragComplete, тогда NativeDragManager выбирает для данного свойства первое значение из списка допустимых операций: копирование, перемещение, ссылка (именно в этой последовательности).


Реализация
    public static function get dropAction():String
    public function set dropAction(value:String):void

См. также

AIR-only isDraggingсвойство 
isDragging:Boolean  [только для чтения]

Версии среды выполнения: AIR 1.0

Сообщает, находится ли операция перетаскивания в процессе выполнения.


Реализация
    public static function get isDragging():Boolean
Сведения о методе
AIR-only acceptDragDrop()метод
public static function acceptDragDrop(target:InteractiveObject):void

Версии среды выполнения: AIR 1.0

Информирует объект NativeDragManager о том, что указанный целевой интерактивный объект может принять опускание, которое соответствует текущему событию перетаскивания.

Данный метод может быть использован только при наличии на указанном целевом объекте обработчика nativeDragDrop для обработки, по крайней мере, одного формата данных в перетаскиваемом элементе и хотя бы одной допустимой операции.

Вызов данной функции возможет только в пределах следующих обработчиков событий: nativeDragEnter или nativeDragOver.

Параметры

target:InteractiveObject

AIR-only doDrag()метод 
public static function doDrag(dragInitiator:InteractiveObject, clipboard:Clipboard, dragImage:BitmapData = null, offset:Point = null, allowedActions:NativeDragOptions = null):void

Версии среды выполнения: AIR 1.0

Начинает выполнять операцию перетаскивания.

Для начала операции перетаскивания необходимо:

  1. Создать новый объект Clipboard.
  2. Добавить данные для передачи, используя один или несколько форматов.
  3. Дополнительно можно создать объект BitmapData, который будет выступать в роли изображения перетаскивания во время перетаскивания.
  4. Дополнительно можно также создать объект NativeDragOptions для ограничения набора поддерживаемых операций при выполнении данного действия. (Если параметр allowedActions не задан, используется значение null, при котором ограничения отсутствуют.)
  5. Вызов NativeDragManager.doDrag().

При вызове этого метода инициирующий объект отправляет событие nativeDragStart, в процессе перетаскивания события nativeDragStart, а когда пользователь отпускает кнопку мыши, завершая шест перетаскивания, событие nativeDragComplete. Обработчик события nativeDragComplete может осуществить проверку свойства dropAction данного события, чтобы определить, была ли начатая операция перетаскивания завершена успешно. Если dropAction является NativeDragActions.NONE, тогда перетаскивание элемента на пригодный целевой объект не произошло.

Вызов этого метода возможен только в пределах следующих обработчиков событий: mouseDown или mouseMove. (Если метод вызывает в ответ на событие mouseMove, то во время перемещения кнопка мыши все равно не должна быть зажата.)

Параметры

dragInitiator:InteractiveObject — Обычно это объект, с которого начинается жест перетаскивания. Получает события nativeDragStart и nativeDragComplete.
 
clipboard:Clipboard — Контейнер объектов для перетаскиваемых данных.
 
dragImage:BitmapData (default = null) — Во время жеста перетаскивания под курсором дополнительно отображается изображение приближения. При значении null изображение не отображается.
 
offset:Point (default = null) — Значение смещения верхнего левого угла изображения перетаскивания относительно активной точки курсора мыши. При отрицательных значениях изображение перемещается вверх и влево относительно активной точки курсора мыши. При значении null верхний левый угол изображения перетаскивания расположен в центре активной точки курсора мыши.
 
allowedActions:NativeDragOptions (default = null) — Ограничивает набор операций перетаскивания, применимых для данного действия. При значении null ограничения отсутствуют.

См. также