Что считать кликом?

Такое простое понятие, но так много способов его интерпретировать.

Я делаю программу (определенную игру), используя библиотеку, основанную на событиях (Allegro). В библиотеке нет специального события для щелчка мыши , но вместо этого есть событие для кнопки вниз и кнопка вверх . При программировании основных меню я был поражен проблемой. Что я считаю кликом? Кнопка вниз ? кнопка вверх событие? Последний, если это произойдет вскоре после кнопки вниз ? Если да, с какой точки я беру позицию курсора из?

В программе нет функции перетаскивания, поэтому все параметры кажутся мне одинаковыми, за исключением, например, самых экстремальных случаев (например, перетаскивание курсора по экрану). Итак, мой вопрос: есть ли какие-либо соглашения о том, что считать кликом?

14 голосов | спросил DJ Pirtu 13 Jam1000000amFri, 13 Jan 2012 04:20:52 +040012 2012, 04:20:52

2 ответа


15

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

  • Что нужно перетаскивать? Даже если у вас нет функций перетаскивания, вам все равно придется решить, что будет делать перетаскивание.

  • Что делать с нажатием кнопки? Опять же, даже если команда не выполнена, часто должно быть что-то .

Фокус

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

Команды

С другой стороны, если выбор мыши завершает команду или изменяет значение данных, то терпимость скорее является проблемой. В этих случаях обычно запускаются команды /изменения при наведении мыши вверх. Я не вижу причин устанавливать ограничение по времени, когда пользователи должны нажимать кнопку мыши, чтобы вызвать команду -let, чтобы они думали, пока они хотят.

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

Единственное исключение - для случаев, когда вы хотите поддерживать auto-repeat для команды, где удерживание кнопки мыши на элементе управления повторяет команду примерно два раза в секунду. Здесь логически команда должна запускаться с помощью мыши. Кнопки прокрутки, дорожка полосы прокрутки и кнопки счетчика работают так. Это также имеет смысл для кнопок Zoom In /Out или Find Next /Previous. Эффективность от автоматического повторения очевидна, но для поддержания достаточной толерантности она должна быть зарезервирована для действий, которые легко можно отменить (например, прокрутки и поиска следующего /предыдущего). Автоматическое повторение для удаленных звуков отлично подходит для удаления спама из папки «Входящие» пользователя, пока пользователь не удалит 15 важных писем, случайно установив телефон на мышь.

Промежуточные государства

Как правило, выбор, который ставит элемент управления в промежуточном состоянии, должен выполняться с помощью мыши. Например, при активации меню элементы появляются на мышь вверх, раскрывающиеся и раскрывающиеся меню открываются на мыши вниз , а не мышь вверх. Это обеспечивает обратную связь с действиями пользователя, а также позволяет пользователю сразу же перетаскивать, чтобы выбрать элемент, делая для эффективного ввода. Он также позволяет пользователям Mac использовать меню Windows так, как они привыкли. Толерантность не является большой проблемой, поскольку простое открытие меню легко отменяется и не изменяет команду или значение.Исключение - это контекстное меню, которое открывается при помощи мыши в Windows. Это потому, что MS хотела разрешить пользователю перетаскивать объекты правой кнопкой мыши (попробуйте в проводнике Windows или в Word - довольно круто).

Если команда запускается с помощью мыши вверх, вы часто должны предоставлять некоторую промежуточную обратную связь на мыши, поэтому пользователь понимает, какую команду они собираются выполнить. Например, кнопки команд отображаются «нажатыми» на мыши. Таким образом, пока команда выполняется на мышке вверх (и, следовательно, вам нужна позиция мыши при наведении мыши), вам также нужно отслеживать, где бы вы не предоставили обратную связь, нажав на мышь, чтобы вы могли ее очистить мышью вверх, в том числе, если пользователь переместился мышь с помощью мыши. Обратная связь с мышью может не понадобиться, если вы уже показываете такую ​​обратную связь с наведением мыши.

«Это интуитивно понятный»

Надлежащее использование мыши и мыши вверх может многое сделать, чтобы сделать пользовательский интерфейс жидким и «интуитивным», что, вероятно, важно для того, чтобы сделать вашу игру забавой. Большинство пользователей, вероятно, не могли сказать вам, как конкретный элемент управления реагирует на мышь вниз и вверх, но хороший дизайн по-прежнему приносит им пользу. Я думаю, что большинство пользователей перетащит кнопку, чтобы отменить ее активацию. Они даже не думают об этом - они кажутся им естественными, хотя это не работает с естественными (физическими) электрическими кнопками - они активируют однажды депрессию. Я никогда не видел попытку пользователя активировать командную кнопку, щелкнув за ее пределами и скользя по ней, хотя будет работать с физической кнопкой. «Интуитивно понятный» может быть странным.

ответил Michael Zuschlag 13 Jpm1000000pmFri, 13 Jan 2012 19:10:21 +040012 2012, 19:10:21
3

Обычно клик регистрируется, когда на одном элементе пользовательского интерфейса происходят как кнопки, так и кнопки события. Возьмите любую программу, нажмите кнопку, затем перетащите курсор, не отпуская кнопку мыши, а затем отпустите ее за пределами кнопки пользовательского интерфейса, которую вы нажали. Кнопка не будет активирована. То же самое касается нажатия за кнопкой и отпускания кнопки. Это единственный способ определить, было ли действие предназначено как щелчок или перетаскивание. Хотя ваша конкретная программа не поддерживает перетаскивание, пользователь не обязательно об этом знает, и вам нужно дать понять пользователю. Попробуйте перетащить ссылку в браузере, и вы обычно получите знак «no entry» на курсоре.

ответил Vitaly Mijiritsky 13 Jpm1000000pmFri, 13 Jan 2012 15:31:25 +040012 2012, 15:31:25

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132