Индикация потенциальных целей

Путешествуя по экрану и перенося с собой контур объекта'источника, курсор проходит над разными потенциальными целями. Эти цели должны визуально демонстрировать свою готовность быть потенци' альной целью. Своей визуальной реакцией потенциальная цель сооб' щает пользователю, что способна выполнить конструктивные дейст' вия с объектом, который будет на ней отпущен. (Разумеется, приложе' ние должно быть достаточно сообразительным, чтобы выявлять ос' мысленные сочетания источников и целей.)

Имеется одно обстоятельство, столь очевидное, что о нем нередко за' бывают; оно состоит в том, что потенциальными целями могут быть только объекты, видимые пользователю. Работающему, но скрытому приложению нет нужды заботиться об индикации своей готовности быть целью. Как правило, на экране находится не так уж много объек' тов – десятка два, не больше. Следовательно, задача реализации про' ще, чем кажется.

Цели−вставки

В ряде приложений имеется возможность отпустить объект между другими объектами. Перетаскивание текста в редакторе Word отно' сится как раз к такой операции, аналогичной операции упорядочива' ния в списках или массивах. В таких случаях на фоне, «позади» гра' фических объектов приложения либо внутри непрерывных данных визуализируется особый тип визуальной подсказки; это и есть цель- вставка.

Хороший пример реализации такого перетаскивания дает сортиров' щик слайдов в PowerPoint. Пользователь может перетащить любой слайд в другую позицию внутри презентации. В ходе перетаскивания между слайдами появляется цель'вставка – вертикальная черная чер' та, похожая на увеличенный текстовый курсор. Редактор Word также демонстрирует цель'вставку при перетаскивании текста. Здесь пользо' ватель видит не только «заряженный» данными указатель мыши, но и вертикальный серый курсор, отмечающий точное положение между символами, в которое будет помещен отпущенный фрагмент текста.

Если объекты можно перетаскивать и располагать между другими объектами, программа должна показывать цель'вставку. Как и в слу' чае с потенциальной целью при перетаскивании типа «источник – цель», программа должна визуально обозначать, где можно отпустить перетаскиваемый объект.

Визуальная обратная связь, сигнализирующая о завершении операции

Если цель и источник сумели договориться, выполняется соответст' вующая операция. Важнейшим моментом на этой стадии является ви' зуальная индикация факта выполнения операции. Если операция за' ключается в перемещении, объект должен исчезнуть из первоначаль' ного положения и появиться в конечном. Так, если мы перетаскиваем файл из одного каталога в другой, объект'источник должен исчезнуть с прежнего места и появиться на новом. Если цель представляет собой не контейнер для данных, а функцию (как в случае с пиктограммой печати), она должна показать, что приняла объект и обрабатывает его (выводит документ на печать). Это можно делать посредством анима' ции или иного изменения внешнего вида.

Прочие особенности перетаскивания

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

Автоматическая прокрутка

Как должна реагировать программа, когда пользователь перетаскива' ет объект за пределы окна приложения? Разумеется, объект перено' сится на новое место, но где это место – внутри приложения или за его пределами?

Рассмотрим в качестве примера Microsoft Word. Что хочет сказать пользователь, перетаскивая выделенный фрагмент текста за пределы видимого в окне текста? «Я хочу перенести этот фрагмент в другую про' грамму» или «Я хочу поместить его в другое место, но оно сейчас не

видно на экране»? В первом случае следует поступить так, как описано в предыдущих разделах. Если же пользователь имеет в виду второе, то приложение должно выполнить автоматическую прокруткув направ' лении перетаскивания, чтобы пользователь мог отпустить выделенный фрагмент в другом месте документа, скрытом в настоящий момент.

Автоматическая прокрутка является очень важным дополнением к пе' ретаскиванию. В тех случаях, когда цель может выходить за пределы экрана, программе нужна автоматическая прокрутка.

Индикация потенциальных целей - student2.ru Любая цель перетаскивания, до которой можно добраться прокруткой, должна быть доступна посредством автомати- ческой прокрутки.

В ранних реализациях автоматическая прокрутка выполнялась, когда пользователь перетаскивал объект за пределы окна приложения. Та' кой подход обладал двумя фатальными недостатками. Во'первых, как выйти за пределы окна, занимающего весь экран? Во'вторых, как при' ложение может отличить желание перенести объект в другое прило' жение от намерения вызвать автоматическую прокрутку?

Компания Microsoft нашла разумное решение этой проблемы. Автома' тическая прокрутка начинается внутри окна приложения, а не снару- жи. Автоматическая прокрутка в направлении перетаскивания начи' нается, когда курсор с перетаскиваемым объектом приближается к гра' ницам окна, подлежащего прокрутке, оставаясь при этом внутри ок' на. Если курсор мыши оказывается на расстоянии 30 пикселов от нижнего края области текста, Word прокручивает содержимое окна вверх. Если указатель подходит на такое же расстояние к верхней гра' нице области текста, Word прокручивает содержимое вниз.

По счастью, недавно разработчики начали реализовывать автоматиче' скую прокрутку с изменяемой скоростью (рис. 19.7): скорость прокрут' ки возрастает при приближении курсора к границе окна. К примеру, если курсор расположен на расстоянии 30 пикселов от верхней грани' цы, текст прокручивается вниз со скоростью одна строка в секунду. На расстоянии 15 пикселов скорость возрастает до двух строк в секунду, и так далее. В результате пользователь может достаточно точно контро' лировать автоматическую прокрутку и применять ее в различных си' туациях.

Другой важной особенностью автоматической прокрутки является за' держка во времени. Если автоматическая прокрутка начинается сра' зу, как только указатель мыши войдет в чувствительную зону у края окна, медлительный пользователь может вызвать автоматическую прокрутку непреднамеренно. Чтобы этого не произошло, следует на' чинать автоматическую прокрутку только после того, как указатель мыши задержится в зоне автоматической прокрутки на достаточно продолжительное время – около половины секунды.

Индикация потенциальных целей - student2.ru Зона быстрой автопрокрутки

Зона средней автопрокрутки Зона медленной автопрокрутки

Рис. 19.7. Это изображение демонстрирует вариант реализации автомати- ческой прокрутки с изменяемой скоростью внутри приложения Проводник. К сожалению, в Windows XP автоматическая прокрутка работает с одной скоростью, которую невозможно изменять. Было бы лучше, если бы автома- тическая прокрутка ускорялась при приближении курсора к границе окна (хотя ограничение скорости также важно сохранить – никому не будет пользы от слишком быстрой прокрутки). Однако отдадим должное Microsoft: мысль о том, что прокрутку следует включать при приближении курсора

к границе внутри окна, а не при ее пересечении, оказалась правильной

Если пользователь перетащит курсор целиком за пределы прокручи' ваемого окна редактора Word, никакой автоматической прокрутки не будет. Вместо нее будет выполнена операция переноса, которая закон' чится в другой программе. Например, если курсор с перетаскиванием перейдет из окна Word в окно PowerPoint и пользователь отпустит кнопку мыши, то выделенный фрагмент текста будет вставлен в слайд PowerPoint в ту позицию, на которую укажет мышь. Более того, если курсор остановится в трех или четырех миллиметрах от любой грани' цы окна PowerPoint, PowerPoint начнет автоматическую прокрутку в соответствующем направлении. Это очень удобная функциональная возможность, поскольку из'за ограничений, накладываемых совре' менными экранами, мы нередко обнаруживаем, что объект, который мы уже принялись перетаскивать, попросту негде отпустить.

Наши рекомендации