Перетаскивание в feathers (Drag and drop)
Статья о том как использовать DragDropManager в Feathers.
В старлинге нету привычных флэшеру методов startDrag() и stopDrag(), для перетаскивания экранных объектов. В старлинге в качестве замены предлагается использовать DragDropManager, как ближайшую альтернативу. Этот менеджер похож больше на флексовый DragManager, чем на флэшевый drag().
Статья о том как использовать DragDropManager в Feathers.
В старлинге нету привычных флэшеру методов startDrag() и stopDrag(), для перетаскивания экранных объектов. В старлинге в качестве замены предлагается использовать DragDropManager, как ближайшую альтернативу. Этот менеджер похож больше на флексовый DragManager, чем на флэшевый drag().
- Требуется имплементировать интерфейсы IDragSource и IDropTarget на соответствующих объектах.
- Вызвать DragDropManager.startDrag(), передать в него объект IDragSource, Touch объект инициализировавший перетаскивание и объект DragData, который хранит данные, нужные в процессе перетаскивания.
- Когда IDropTarget рассылает событие DragDropEvent.DRAG_ENTER (DragDropManager обрабатывает рассылку события, требуется только слушать), и DragData объект включает в себе данные в правильном формате, оно должно вызвать DragDropManager.acceptDrag().
- IDropTarget разошлет событие DragDropEvent.DRAG_DROP при "бросании" объекта (например при остановке нажатия пальцем на экран или отпускании левой кнопки мыши) над элементом IDropTarget. При этом вам нужно обработать "бросание" евент листенером.
- IDragSource рассылает событие DragDropEvent.DRAG_COMPLETE вне зависимости от того, произошел ли "бросок" или нет. Свойство isDropped события это Boolean, который отображает, было ли перетаскивание "кинуто" на цель и принято, или было отменено. Если данные перетаскивания должны быть удалены из источника после перетаскивания на цель, евент листенер по этому событию - правильно место чтобы совершить это. Просто проверьте свойство isDropped чтобы проверить, произошел ли "бросок" или нет.
Можно передать "призрачное изображение перетаскивания", как "аватар", при вызове DragDropManager.startDrag(). Аватар преследует мышиный курсор во время перетаскивания.
Формат это то что передается между источником перетаскивания и целью перетаскивания. Это может быть то же что и аватар или более информационной.
Если вы используете простое перетаскивание экранного объекта (с которым не асоциированно никаких данных), вы можете добавить этот экранный объект, как "данные перетаскивания".
var dragData:DragData = new DragData(); dragData.setDataForFormat("display-object-drag-format", theDisplayObject);
В этом случае формат данных был назван от балды "display-object-drag-format", можно его называть как угодно. Важно, чтобы строка была одинакова на обеих стороных (источник перетаскивания и цель перетаскивания)
Внутри DragDropEvent.DRAG_ENTER слушателе можно проверить формат
Перевод статьи http://wiki.starling-framework.org/feathers/drag-drop
Внутри DragDropEvent.DRAG_ENTER слушателе можно проверить формат
function(event:DragDropEvent, dragData:DragData):void { if(dragData.hasDataForFormat("display-object-drag-format")) { DragDropManager.acceptDrag(this); } }Если DragDropEvent.DRAG_DROP прослушивается, вы используете dragData.getDataFroFomat() с такой же строкой, чтобы вытащить display object или другие данные.
Перевод статьи http://wiki.starling-framework.org/feathers/drag-drop
Комментариев нет:
Отправить комментарий