Пакет | flash.desktop |
Класс | public class NativeDragManager |
Наследование | NativeDragManager ![]() |
Версии среды выполнения: | AIR 1.0 |
Можно перемещать следующие типы данных:
Примечание. Все члены NativeDragManager являются статическими. Нужды в создании этого класса нет.
Операция перетаскивания представляет собой действие пользователя, которое начинается с щелчка по видимому элементу и его дальнейшему перетаскиванию куда-либо. По мере передвижения в окне приложения AIR перетаскиваемые интерактивные объекты отправляют события собственного перетаскивания. Обработчики этих событий могут вызывать метода класса NativeDragManager для определения возможности перетащить данный элемент на какой-либо объект. В результате NativeDragManager реагирует на действия пользователя изменением курсора мыши.
Операции перетаскивания
Перетаскивание используется для трех типов действий, называемых операциями. Так как значение этих операций зависит от контекста приложения, никого определенной реакции на действия при выполнении программы не предусмотрено. Однако, правильная реализация операций повышает удобство использование данного приложения.
Возможные операции:
Возможные операции по перетаскиванию задаются параметром allowedActions
при вызове NativeDragManager.doDrag()
в момент начала операции перетаскивания. Если параметр allowedActions
не задан, все операции считаются допустимыми. Потенциальные цели опускания, могут использовать свойство allowedActions
объекта NativeDragEvent для запрещения определенных операций перетаскивания (несмотря на то, что в ходе выполнения программы эти ограничения отсутствуют).
Если цель опускания реализует только одно действие, то объект может настроить в обработчиках свойство dropAction
класса NativeDragManager на обработку событий nativeDragEnter
и nativeDragOver
. Настройка данного свойства до перетаскивания позволит обновлять курсор мыши для отображения поддерживаемого действия, а также исключит возможность совершения пользователем несовместимого действия с помощью клавиш-модификаторов. При совершении несовместимой операции перетаскивание не осуществляется, даже если цель вызывает метод acceptDrop()
.
Если потенциальная цель принимает опускание, она должна указать совершаемое действие путем задания свойства NativeDragManager.dropAction
в ответ на событие nativeDragDrop
. Эта операция возвращается инициирующему экранному объекту в виде события nativeDragComplete
. Если цель опускания операцию не задает, то возвращается операция по умолчанию из списка доступных операций в следующем порядке: копирование, перемещение, ссылка. Инициирующий объект отвечает за обновление внутреннего состояния в ответ на выбранную операцию.
Константы строк для названий операций задаются в классе NativeDragActions.
Порядок событий
Процесс перетаскивание начинается с вызова метода NativeDragManager.doDrag()
в рамках обработчика событий mouseDown
или mouseMove
и проходит через следующую последовательность событий в ответ на действия пользователя:
nativeDragStart
— при вызове NativeDragManager.doDrag()
, интерактивный объект, переданный в качестве параметра, становится инициирующим объектом и отправляет событие nativeDragStart
.nativeDragUpdate
— в процессе перетаскивания инициирующий объект постоянно отправляет события nativeDragUpdate
.nativeDragEnter
, nativeDragOver
— при наведении перетаскиваемого объекта на интерактивный объект, последний отправляет событие nativeDragEnter
. При задержке действия над интерактивным объектом он постоянно отправляет события nativeDragOver
. В ответ на любое из этих двух событий объект, выступающий в роли потенциальной цели опускания, должен осуществить проверку свойств объекта события, чтобы принять или отклонить опускание. Если формат данных и совершаемая операция находятся в списке допустимых, то обработчик этих событий вызывает NativeDragManager.acceptDrop()
и передает действие экранному объекту, который становится местом опускания (обычно это объект, который отправлял событие nativeDragEnter
или nativeDragOver
). Затем пользователь может опустить перетаскиваемый объект на цель.nativeDragExit
— при выходе жеста перетаскивания на границы интерактивного объекта, объект отправляет событие nativeDragExit
. Если данный объект был выбран в качестве целевого путем вызова метода NativeDragManager.acceptDrop()
, этот выбор считается больше недействительным. При повторном входе жеста перетаскивания в пределы действия интерактивного объекта необходимо также вызвать acceptDrop()
повторно.nativeDragDrop
— целевой экранный объект отправляет событие nativeDragDrop
, когда пользователь отпускает кнопку мыши над объектом. Обработчик данного события получает доступ к свойству transferable
объекта события и устанавливает свойство NativeDragManager.dropAction
для оповещения инициирующего объекта об операции, которую необходимо выполнить.nativeDragComplete
— когда пользователь в конце жеста перетаскивания отпускает кнопку мыши, инициирующий объект отправляет событие nativeDragComplete
(независимо от результата самого опускания). Обработчик этого события проверяет свойство dropAction
объекта события и определяет вносимые изменения в его внутреннее состояние данных, если таковые требуется (например, удаление из списка перетащенного элемента). Если dropAction
является NativeDragActions.NONE
, тогда перетаскивание элемента на пригодный целевой объект не произошло.Жесты при работе с приложениями
Когда жест перетаскивания входит в окно приложения 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()
приведет к ошибке системы безопасности.
См. также
Свойство | Определено | ||
---|---|---|---|
![]() | constructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта. | Object | |
![]() [статические] [только для чтения]
Интерактивный объект, который инициировал операцию перетаскивания, передается вызванному методу NativeDragManager.doDrag(). | NativeDragManager | ||
![]() [статические]
Операция перетаскивания, определяемая целью опускания. | NativeDragManager | ||
![]() [статические] [только для чтения]
Сообщает, находится ли операция перетаскивания в процессе выполнения. | NativeDragManager | ||
![]() | prototype : Object [статические]
Ссылка на модель объекта класса или функции. | Object |
Метод | Определено | ||
---|---|---|---|
[статические]
Информирует объект NativeDragManager о том, что указанный целевой интерактивный объект может принять опускание, которое соответствует текущему событию перетаскивания. | NativeDragManager | ||
![]() [статические]
Начинает выполнять операцию перетаскивания. | NativeDragManager | ||
![]() |
Показывает, определено ли заданное свойство для объекта. | Object | |
![]() |
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра. | Object | |
![]() |
Показывает наличие заданного свойства и его перечисляемость. | Object | |
![]() |
Задает доступность динамического свойства для операций цикла. | Object | |
![]() |
Возвращает строковое представление заданного объекта. | Object | |
![]() |
Возвращает элементарное значение заданного объекта. | Object |
![]() | свойство |
dragInitiator:InteractiveObject
[только для чтения] Версии среды выполнения: | AIR 1.0 |
Интерактивный объект, который инициировал операцию перетаскивания, передается вызванному методу NativeDragManager.doDrag()
.
public static function get dragInitiator():InteractiveObject
![]() | свойство |
dropAction:String
[чтение и запись] Версии среды выполнения: | AIR 1.0 |
Операция перетаскивания, определяемая целью опускания.
Свойство dropAction
настраивается в обработчике события nativeDragDrop
. Если свойство dropAction
не настроено до момента наступления события nativeDragComplete
, тогда NativeDragManager выбирает для данного свойства первое значение из списка допустимых операций: копирование, перемещение, ссылка (именно в этой последовательности).
public static function get dropAction():String
public function set dropAction(value:String):void
См. также
![]() | свойство |
isDragging:Boolean
[только для чтения] Версии среды выполнения: | AIR 1.0 |
Сообщает, находится ли операция перетаскивания в процессе выполнения.
public static function get isDragging():Boolean
![]() | () | метод |
public static function acceptDragDrop(target:InteractiveObject):void
Версии среды выполнения: | AIR 1.0 |
Информирует объект NativeDragManager о том, что указанный целевой интерактивный объект может принять опускание, которое соответствует текущему событию перетаскивания.
Данный метод может быть использован только при наличии на указанном целевом объекте обработчика nativeDragDrop
для обработки, по крайней мере, одного формата данных в перетаскиваемом элементе и хотя бы одной допустимой операции.
Вызов данной функции возможет только в пределах следующих обработчиков событий: nativeDragEnter
или nativeDragOver
.
Параметры
target:InteractiveObject |
![]() | () | метод |
public static function doDrag(dragInitiator:InteractiveObject, clipboard:Clipboard, dragImage:BitmapData = null, offset:Point = null, allowedActions:NativeDragOptions = null):void
Версии среды выполнения: | AIR 1.0 |
Начинает выполнять операцию перетаскивания.
Для начала операции перетаскивания необходимо:
allowedActions
не задан, используется значение null
, при котором ограничения отсутствуют.)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 ограничения отсутствуют.
|
См. также