Пакет | flash.desktop |
Класс | public class NativeDragManager |
Наследование | NativeDragManager Object |
Версии среды выполнения: | AIR 1.0 |
Можно перемещать следующие типы данных:
- Растровые изображения
- Файлы
- Текст
- Строки URL
- Последовательные объекты
- Ссылки на объекты (действует только в пределах исходного приложения)
Примечание. Все члены NativeDragManager являются статическими. Нужды в создании этого класса нет.
Операция перетаскивания представляет собой действие пользователя, которое начинается с щелчка по видимому элементу и его дальнейшему перетаскиванию куда-либо. По мере передвижения в окне приложения AIR перетаскиваемые интерактивные объекты в списке отображения отправляют события собственного перетаскивания. Обработчики этих событий могут вызывать методы класса NativeDragManager для определения возможности перетащить данный элемент на какой-либо объект. В результате NativeDragManager реагирует на действия пользователя изменением курсора мыши.
Поддержка в профилях AIR: эта функция не поддерживается в среде AIR для телевизионных устройств. Кроме того, она поддерживается не на всех мобильных устройствах. Используйте свойство NativeDragManager.isSupported
, чтобы проверить наличие поддержки в среде выполнения. Дополнительные сведения о поддержке API-интерфейса в разных профилях см. в разделе «Поддержка в профилях AIR».
Операции перетаскивания
Перетаскивание используется для трех типов действий, называемых операциями. Так как значение этих операций зависит от контекста приложения, никого определенной реакции на действия при выполнении программы не предусмотрено. Однако, правильная реализация операций повышает удобство использование данного приложения.
Возможные операции:
- Копирование — осуществляет копирование данных, оставляя оригинал без изменений. (При перетаскивании объектов внутри приложения необходимо следить за тем, чтобы копировался сам объект, а не ссылка на него.)
- Перемещение — переносит данные из исходного контекста в контекст, определяемый операцией перетаскивания, например, при перемещении объекта из одного списка в другой.
- Ссылка — создает ярлык или ссылку на исходные данные, оставляя их в исходном контексте.
Возможные операции по перетаскиванию задаются параметром 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()
приведет к ошибке системы безопасности.
Связанные элементы API
flash.desktop.NativeDragActions
flash.desktop.NativeDragOptions
flash.desktop.Clipboard
Свойство | Определено | ||
---|---|---|---|
constructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта. | Object | ||
dragInitiator : InteractiveObject [статические] [только для чтения]
Интерактивный объект, который инициировал операцию перетаскивания, передается вызванному методу NativeDragManager.doDrag(). | NativeDragManager | ||
dropAction : String [статические]
Операция перетаскивания, определяемая целью опускания. | NativeDragManager | ||
isDragging : Boolean [статические] [только для чтения]
Сообщает, находится ли операция перетаскивания в процессе выполнения. | NativeDragManager | ||
isSupported : Boolean [статические] [только для чтения]
Свойству isSupported задается значение true, если текущая платформа поддерживает класс NativeDragManager, в противном случае задается значение false. | NativeDragManager |
Метод | Определено | ||
---|---|---|---|
[статические]
Информирует объект NativeDragManager о том, что указанный целевой интерактивный объект может принять опускание, которое соответствует текущему событию перетаскивания. | NativeDragManager | ||
doDrag(dragInitiator:InteractiveObject, clipboard:Clipboard, dragImage:BitmapData = null, offset:Point = null, allowedActions:NativeDragOptions = null):void [статические]
Начинает выполнять операцию перетаскивания. | NativeDragManager | ||
Показывает, определено ли заданное свойство для объекта. | Object | ||
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра. | Object | ||
Показывает наличие заданного свойства и его перечисляемость. | Object | ||
Задает доступность динамического свойства для операций цикла. | Object | ||
Возвращает строковое представление этого объекта, отформатированного в соответствии со стандартами, принятыми для данной локали. | Object | ||
Возвращает строковое представление заданного объекта. | Object | ||
Возвращает элементарное значение заданного объекта. | Object |
dragInitiator | свойство |
dragInitiator:InteractiveObject
[только для чтения] Версии среды выполнения: | AIR 1.0 |
Интерактивный объект, который инициировал операцию перетаскивания, передается вызванному методу NativeDragManager.doDrag()
.
Реализация
public static function get dragInitiator():InteractiveObject
dropAction | свойство |
dropAction:String
Версии среды выполнения: | AIR 1.0 |
Операция перетаскивания, определяемая целью опускания.
Свойство dropAction
настраивается в обработчике события nativeDragDrop
. Если свойство dropAction
не настроено до момента наступления события nativeDragComplete
, тогда NativeDragManager выбирает для данного свойства первое значение из списка допустимых операций: копирование, перемещение, ссылка (именно в этой последовательности).
Реализация
public static function get dropAction():String
public static function set dropAction(value:String):void
Связанные элементы API
isDragging | свойство |
isSupported | свойство |
isSupported:Boolean
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 2 |
Свойству isSupported
задается значение true
, если текущая платформа поддерживает класс NativeDragManager, в противном случае задается значение false
.
Реализация
public static function get isSupported():Boolean
acceptDragDrop | () | метод |
public static function acceptDragDrop(target:InteractiveObject):void
Версии среды выполнения: | AIR 1.0 |
Информирует объект NativeDragManager о том, что указанный целевой интерактивный объект может принять опускание, которое соответствует текущему событию перетаскивания.
Данный метод может быть использован только при наличии на указанном целевом объекте обработчика nativeDragDrop
для обработки, по крайней мере, одного формата данных в перетаскиваемом элементе и хотя бы одной допустимой операции.
Вызов данной функции возможет только в пределах следующих обработчиков событий: nativeDragEnter
или nativeDragOver
.
Параметры
target:InteractiveObject |
doDrag | () | метод |
public static function doDrag(dragInitiator:InteractiveObject, clipboard:Clipboard, dragImage:BitmapData = null, offset:Point = null, allowedActions:NativeDragOptions = null):void
Версии среды выполнения: | AIR 1.0 |
Начинает выполнять операцию перетаскивания.
Для начала операции перетаскивания необходимо:
- Создать новый объект Clipboard.
- Добавить данные для передачи, используя один или несколько форматов.
- Дополнительно можно создать объект BitmapData, который будет выступать в роли изображения перетаскивания во время перетаскивания.
- Дополнительно можно также создать объект NativeDragOptions для ограничения набора поддерживаемых операций при выполнении данного действия. (Если параметр
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 ограничения отсутствуют.
|
Связанные элементы API
Tue Jun 12 2018, 11:34 AM Z